《設計模式其實很簡單》 - 書摘精要

(P9)

需要足夠簡單的邏輯,纔可以在代碼級別上違反單一職責“原則”;
需要類中方法數量足夠少,纔可以在方法級別上違反“單一職責原則”;

(P14)

“開放-封閉”原則是面向對象開發中所有設計原則的核心;

(P15)

“開發-封閉”原則的定義是 —— 程序的實體對象(模塊、類、函數等)應該可以進行擴展,但不應該可以修改;

(P17)

只依賴於抽象,實現“開放-封閉”原則的核心思想就是面向抽象編程,而不是面向具體編程,因爲抽象相對來說是穩定的;

(P20)

實現“開放-封閉”原則的關鍵就是實現抽象化,並且從抽象化得出具體化的實例;

(P21)

在編程中,用哪種語言來編寫程序並不重要,只要編寫代碼時考慮的是如何針對抽象進行編程而不是針對細節編程 —— 程序中所有的依賴關係都終止於抽象類或者接口,這纔是真正的面向對象設計;

(P24)

合成和聚合都是關聯關係的特殊種類,合成本質上是值的聚合,聚合是引用的聚合;

在面向對象設計中,有兩種基本的辦法可以實現複用:第一種是通過合成/聚合,即合成/聚合複用原則(CARP);第二種就是通過繼承;

(P29)

“迪米特法則”的定義 —— 如果兩個類之間不必直接通信,則這兩個類不應該發生直接的相互作用。如果其中的一個類需要調用另一個類的某個方法,可以通過第三方轉發這個調用;

類之間的耦合越弱,越有利於複用;

(P39)

Java 中沒有虛函數,也可以說類的每一個函數都是虛函數,都可以來重寫 (Override);

(P43)

“工廠方法模式”也有其缺點:每增加一個產品,就要相應地添加一個產品工廠類,增加了額外的開發量;

(P51)

通過“反射”技術能夠避免 If 和 Switch 使用的缺點,使得程序的靈活性有大幅度的提高;

(P52)

“抽象工廠”接口確定了可以被創建的產品集合,新種類產品的加入需要擴展抽象工廠接口,這就涉及到了接口本身和所有實現類的改變;

(P53)

實踐是學習編程的最好方法;

(P61)

“==” 對於值類型會判斷其值是否相等,而對於引用類型則會判斷引用(內存地址)是否相同,也就是判斷是否是同一個對象;

對於引用類型,“==” 運算符只是調用了對象的 equals 方法;

(P75)

“建造者模式”是面向對象中“多態”特性的一個非常好的應用;

(P169)

抽象方法是必須被子類重寫的,不然編譯器會報錯;

(P264)

一般情況下,“結構型模式”都是使用繼承機制將接口進行組合以及實現;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章