**各種原則要求的側重點不同,總地來說:**
* 開閉原則是核心,對擴展開放對修改關閉是軟件設計、后期擴展的基石
* 單一職責原則要求我們設計接口,制定模塊功能時保持模塊或者接口功能單一,接口設計或功能設計盡量保持原子性,修改一處不能影響全局或其它模塊
* 里氏替換原則和依賴倒置原則,按照作者的理解,這倆原則總的是要求我們要面向接口、面向抽象編程,設計程序的時候盡可能使用基類或者接口進行對象的定義或引用,而不是具體的實現,否則實現一旦有變更,上層調用者就必須做出對應變更,這樣一來,整個模塊可能都需要重新調整,非常不利于后期拓展
* 接口隔離原則具體應用到程序中,比如我們在傳統 MVC 開發時,Service 層調用 DAO 層一般會使用接口進行調用,各層之間盡量面向接口通信,其實也是一種降低模塊耦合的方法
* 迪米特法則的初衷也是為了降低模塊耦合,代碼示例中我們引入了類似 “中間人” 的概念,上層模塊不直接調用下層模塊,而是引入第三方進行代辦,這也是為了降低模塊的耦合度
* 組合/聚合復用原則,聚合是一種弱關聯,而組合是一種強關聯,表現在 UML 類圖上的話聚合是使用空心四邊形加箭頭表示,而組合是使用實心四邊形加箭頭表示,合成復用原則總的就是要求我們盡量利用好已有對象,從而達到功能復用,具體是聚合還是組合,還是一般關聯,就要看具體情況再定了