Udemy課程Design Patterns in Java 1

SOLID Design Principles-(1)Single Responsibility Principle(SRP)

ZONGRU Li
3 min readJul 22, 2019

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!

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet