在物件導向程式設計領域中,單一職責原則
(single reponsibility principle)規定每個類都應該有乙個單一的功能,並且該功能應該由這個類完全封裝起來。所有它的服務應該嚴密的和該功能平行。準確的解釋是,就乙個類而言,應該僅有乙個引起它變化的原因。
這個術語由羅伯特·c·馬丁在他的《敏捷軟體開發,原則,模式和實踐》一書中的一篇名為「物件導向設計原則」的文章中給出,他表述該原則是基於內聚原則之上。
乙個具體的例子就是,乙個用於編輯和列印報表的模組,這樣的模組存在兩個改變的原因。第一,報表的內容可以改變;第二,報表的格式可以改變。這兩個方面的改變因不同的原因而發生。單一職責原則認為這兩個方面的問題實際上是兩個分離的功能,因此它們應該分離在不同的類或模組中。把不同的改變原因的事物耦合在一起的設計是糟糕的。
保持乙個類專注於單一的功能的乙個重要的原因是,它會使得類更加的健壯。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或抑制這個類完成其它職責的能力,這種耦合會導致脆弱的設計,當發生變化時,設計會遭到意想不到的破壞。
軟體設計真正要做的許多內容,就是發現職責並且把那些職責相互分離,如果你能夠想到多於乙個的動機去改變乙個類,那麼這個類就具有多於乙個的職責。
單一職責原則
定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t...
單一職責原則
單一職責原則 乙個類,只有乙個引起它變化的原因。應該只有乙個職責。每乙個職責都是變化的乙個軸線,如果乙個類有乙個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當乙個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復用性。例如 要實現邏輯和介面的分離。對於user類,裡...
單一職責原則
問題由來 一心二用,效率降低 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 專注做某件事情 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t2完成職責p2功能。這樣,當修改類t1...