設計模式究竟有幾個原則
Categories:
最早總結的設計模式只有 5 個, 即SOLID:
單一職責原則 (Single Responsibility Principle, SRP):一個類應該只有一個引起變化的原因,即一個類應該只有一個責任。開閉原則 (Open/Closed Principle, OCP):軟體實體(類、模組、函數等)應該對擴展開放,對修改關閉,即應該通過擴展來實現變化,而不是通過修改已有的代碼。里氏替換原則 (Liskov Substitution Principle, LSP):子類型必須能夠替換其基類型,即派生類必須能夠替換其基類而不影響程式的正確性。接口隔離原則 (Interface Segregation Principle, ISP):不應該強迫客戶端依賴於它們不使用的接口。應該將大接口拆分成更小的、更具體的接口,以便客戶端只需知道它們需要使用的方法。依賴倒置原則 (Dependency Inversion Principle, DIP):高層模組不應該依賴於低層模組,二者都應該依賴於抽象。抽象不應該依賴於具體實現細節,具體實現細節應該依賴於抽象。
後來增加了兩個規則, 這些後加的規則相較來說更具體, 更有指導性. 我們從原則解釋中可以看到SOLID描述應該怎麼做, 後加的規則描述優先/最好怎麼做.
合成/聚合復用原則 (Composition/Aggregation Reuse Principle, CARP):應該優先使用對象組合(合成)和聚合,而不是繼承來達到代碼復用的目的。迪米特法則 (Law of Demeter, LoD):一個對象應該對其他對象有盡可能少的了解,即一個對象應該對其它對象的內部結構和實現細節知道得越少越好。
除了上述提到的常見設計原則外,還有一些其他的設計原則,雖然不如前面提到的那些廣為人知,但同樣對軟體設計和架構有重要的指導作用。 後續提出的這些規則, 有點畫蛇添足, 至少我認為它們不反直覺, 不需要深入思考.
最少知識原則 (Principle of Least Knowledge, PoLK):也被稱為迪米特法則的擴展,主張一個對象應該盡可能少地了解其他對象的信息。這個原則的產生可以追溯到 1987 年由帕特里夏·萊塞爾(Patricia Lago)和科威特·伯克(Koos Visser)提出的"最少通信法則"。穩定依賴原則 (Stable Dependencies Principle, SDP):該原則認為軟體設計應該確保穩定的組件不依賴於不穩定的組件,即穩定性較高的組件應該更少地依賴於穩定性較低的組件。這個原則的思想來源於對軟體系統中組件之間關係的深入研究。穩定抽象原則 (Stable Abstraction Principle, SAP):與穩定依賴原則相呼應,該原則指導著將抽象性與穩定性相匹配,即穩定的組件應該是抽象的,而不穩定的組件應該是具體的。這個原則有助於確保軟體系統的穩定性和靈活性。