**在物件導向程式設計領域中, 單一職責原則(single responsibility principle)規定每個類都應該有乙個單一的功能,並且該功能應該由這個類完全封裝起來。**所有它的(這個類的)服務都應該嚴密的和該功能平行(功能平行,意味著沒有依賴)。
乙個類或者模組應該有且只有乙個改變的原因。乙個具體的例子就是,想象有乙個用於編輯和列印報表的模組。這樣的乙個模組存在兩個改變的原因。第一,報表的內容可以改變(編輯)。第二,報表的格式可以改變(列印)。這兩方面會的改變因為完全不同的起因而發生:乙個是本質的修改,乙個是表面的修改。單一功能原則認為這兩方面的問題事實上是兩個分離的功能,因此他們應該分離在不同的類或者模組裡。把有不同的改變原因的事物耦合在一起的設計是糟糕的。
保持乙個類專注於單一功能點上的乙個重要的原因是,它會使得類更加的健壯。繼續上面的例子,如果有乙個對於報表編輯流程的修改,那麼將存在極大的危險性,因為假設這兩個功能存在於同乙個類中,修改報表的編輯流程會導致公共狀態或者依賴關係的改變,列印功能的**會因此不工作。
如果實際情況不允許乙個類只實現單一職責,但至少在方法上也要實現單一職責。
設計原則 單一職責原則
定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t...
設計原則 單一職責原則
1 原則的定義 2 原則設計的初衷 3 能解決哪些問題 4 有哪些場景可以使用 單一職責原則,英文名single responsibility principle,縮寫為srp。乙個類或者模組只負責完成乙個職責 或者功能 也就是說,不要設計大而全的類,要設計粒度小,功能單一的類。換個角度來講就是,乙...
設計原則 單一職責原則
設計原則 單一原則 如何理解單一職責原則乙個類或者模組只負責完成乙個職責 或者功能 注意,這個原則描述的物件包含兩個,乙個是類 class 乙個是模組 module 關於這兩個概念,在專欄中,有兩種理解方式。一種理解是 把模組看作比類更加抽象的概念,類也可以看作模組。另一種理解是 把模組看作比類更加...