一、開閉原則定義:
乙個軟體實體如類、模組函式應該對擴充套件開放,對修改關閉。是其他原則的基礎或者說是總宗旨,其他原則可以說是此原則的乙個延伸。
說人話:不修改現有**的基礎上,去新增功能
二、依賴倒置原則定義:
高層模組不應該依賴低層模組,二者都應該依賴其抽象。抽象不應該依賴細節;細節應該依賴抽象。
說人話呼叫者:我只管用哪個介面,至於具體實現我不管實現者:我只管實現哪個介面,至於誰呼叫,我不管
三、單一職責原則定義:
不要存在多於乙個導致類變更的原因。
說人話:我只能做一件事,別的事情您另外找人。乙個類(乙個模組、或者乙個方法)承擔的職責越多,那麼其被復用的可能性就會越低。
典型反例:萬能類
優點:降低類的複雜度、提高類的可讀性、提高系統的可維護性、降低變更引起的風險。
四、介面隔離原則定義:
用多個專門的介面,而不使用單一的總介面,客戶端不應該依賴它不需要的介面。
和單一職責原則的區別:介面隔離原則:低耦合,橫向角度
單一職責原則:高內聚,縱向角度
舉例:乙個公司為了方便管理,需要把員工分成很多部門(介面隔離原則),但是it部門只做和it技術相關的工作(單一職責原則),專業的人做專業的事情
五、迪公尺特法則(最少知道原則)定義:
乙個物件應該對其他物件保持最少的了解,又叫最少知道原則。
朋友的概念:出現在成員變數、方法輸入、輸出引數中的類稱為朋友關係類,而出現在方法體內部的類不屬於朋友類,所以這類實體類也是我們要避免的。
說人話:實體類應出現在在成員變數、方法輸入、輸出引數中,避免出現在方法體內部優點:降低類之間的耦合。
六、裡式替換法則定義:
如果對每乙個型別為 t1 的物件 o1,都有型別為 t2 的物件 o2,使得以 t1 定義的所有程式 p 在所有的物件 o1 都替換成 o2 時,程式 p 的行為沒有發生變化,那麼型別 t2 是型別 t1 的子型別。定義擴充套件:乙個軟體實體如果適用乙個父類的話,那麼一定適用於其子類,所有引用父類的地方必須能透明的使用其子類的物件,子類物件能夠替換父類物件,而程式邏輯不變。
優點:約束繼承氾濫,開閉原則的一種體現。
加強程式的健壯性,同時變更時也可以做到非常好的相容性提高程式的可維護性、擴充套件性。降低需求變更時引入的風險。
七、合成(組合)/聚合復用法則定義:
盡量使用物件組合/聚合,而不是繼承關係達到軟體復用的目的。
優點:可以是系統更加靈活,降低類與類之間的耦合度,乙個類的變化對其他類造成的影響相對較少。
軟體設計七大原則
軟體設計的七大原則 設計模式遵循的一般原則 1.開 閉原則 open closed principle,ocp 乙個軟體實體應當對擴充套件開發,對修改關閉.說的是,再設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件.換言之,應當可以在不必修改源 的情況下改變這個模組的行為,在保持系...
軟體設計原則(七大原則)
本片是自己在工作閒餘時間學習軟體設計模式所獲,在這裡歸納總結,如有不足請多多指教 說到軟體設計原則,可能很多人都會和軟體設計模式混淆,尤其是對剛工作不久的童鞋,其實軟體設計原則只是我們在軟體設計中對軟體架構,各模組之間松耦合,可重用性的一種總結的抽象。而軟體設計模式傾向於軟體架構方面,是站在全域性看...
軟體設計的七大原則
軟體設計的七大原則 設計模式遵循的一般原則 1.開 閉原則 open closed principle,ocp 乙個軟體實體應當對擴充套件開發,對修改關閉.說的是,再設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件.換言之,應當可以在不必修改源 的情況下改變這個模組的行為,在保持系...