Udemy課程Design Patterns in Java 1
SOLID Design Principles-(1)Single Responsibility Principle(SRP)
Single Responsibility Principle(SRP):單一職責
解釋:
一個class只因為單一因素變更,或說一個class只有單一職責,又或說一個class不該包含複數個職責
現在做一個簡單的Journal的class,初步內容如下
上面class內做的事都只跟Journal有關(新增日記實例或刪除)
而toString也只是讓別的class方便使用Journal內含的資訊
接著新加一個Demo class來操作Journal內容
並且執行可以看到:
Demo只是實際操作Journal物件j
而j物件只做Journal相關(因為已經定義Journal相關的Method)的事
在某些情況下我們可能會希望將Journal內容儲存成txt
所以繼續擴充Journal class
如上程式,在Journal class內最下面新加入save與load的Method
已經違反了SRP原則
因為儲存或讀取Journal相關資料並不是Journal本身關心與涉及的部分
"儲存或讀取Journal相關資料"這些事已經是另一獨立的項目
在此姑且稱persistence
所以更佳的寫法是將”儲存或讀取Journal相關資料”這些事獨立出來做
新增一個Persistence的class
所以上面這個Persistence class 關心的只有針對Journal資料的儲存與讀取
一樣在同個Demo class擴展Persistence實例來演練
直接執行上面Demo class會見到:
利用新class-Persistence來處理儲存或讀取Journal資料這件事即符合SRP概念
可以想像若一個class包山包海的含概所有的事情的處理
假若今天要改寫其中一件事的處理Method
光要找到該改的Method就很困難
而若依事情的概念(concern點),將其分成多個不同class
將更好控制與管理code!