單一職責原則:就乙個類而言,應該僅有乙個引起它變化的原因!
如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。
這種耦合會導致脆弱的設計,當變化發生時,設計會遭受意想不到的破壞!單一職責原則,其核心的思想是:
乙個優良的系統設計,強調模組間保持低耦合、高內聚的關係,在物件導向設計中這條規則同樣適用,所以物件導向的第乙個設計原則就是:單一職責原則(srp,single responsibility principle)。
單一職責,強調的是職責的分離,在某種程度上對職責的理解,構成了不同類之間耦合關係的設計關鍵,因此單一職責原則或多或少成為設計過程中乙個必須考慮的基礎性原則。
單一職責原則可以看作是低耦合、高內聚在物件導向原則上的引申,將職責定義為引起變化的原因,以提高內聚性來減少引起變化的原因。職責過多,可能引起它變化的原因就越多,這將導致職責依賴,相互之間就產生影響,從而極大的損傷其內聚性和耦合度。單一職責,通常意味著單一的功能,因此不要為類實現過多的功能點,以保證實體只有乙個引起它變化的原因。
關於單一職責原則,建議是:
乙個類只有乙個引起它變化的原因,否則就應當考慮重構。
srp由引起變化的原因決定,而不由功能職責決定。雖然職責常常是引起變化的軸線,但是有時卻未必,應該審時度勢。
測試驅動開發,有助於實現合理分離功能的設計。
可以通過façade模式或proxy模式進行職責分離。
二〇〇九年十一月五日
小菜學設計模式 單一職責原則
單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因!如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受意想不到的破壞!單一職責原則,其核心的思想是 乙個優良的系統設計,強調模組間保持...
設計模式原則 單一職責原則
定義 乙個物件應該只包含單一的職責,並且該職責被完整地封裝在乙個類中。即 不要存在多於乙個導致類變更的原因。通俗的說,就是乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 ...
設計模式原則 單一職責原則
對類來說的,即乙個類應該只負責一項職責。假如類a負責多項職責,當其中一項職責需求發生變更時,可能對其他職責的執行造成影響。例如 類a負責實現 訂單資料持久化 職責 和 使用者資料持久化 職責,那麼當我們需要修改 使用者資料持久化 需求時,由於 糅雜在乙個類裡,可能會對 訂單資料持久化 的職責造成影響...