(P9)
須要足夠簡單的邏輯,才能夠在代碼級別上違反單一職責「原則」;
須要類中方法數量足夠少,才能夠在方法級別上違反「單一職責原則」;
(P14)
「開放-封閉」原則是面向對象開發中全部設計原則的核心;
(P15)
「開發-封閉」原則的定義是 —— 程序的實體對象(模塊、類、函數等)應該能夠進行擴展,但不該該能夠修改;
(P17)
只依賴於抽象,實現「開放-封閉」原則的核心思想就是面向抽象編程,而不是面向具體編程,由於抽象相對來講是穩定的;
(P20)
實現「開放-封閉」原則的關鍵就是實現抽象化,而且從抽象化得出具體化的實例;
(P21)
在編程中,用哪一種語言來編寫程序並不重要,只要編寫代碼時考慮的是如何針對抽象進行編程而不是針對細節編程 —— 程序中全部的依賴關係都終止於抽象類或者接口,這纔是真正的面向對象設計;
(P24)
合成和聚合都是關聯關係的特殊種類,合成本質上是值的聚合,聚合是引用的聚合;
在面向對象設計中,有兩種基本的辦法能夠實現複用:第一種是經過合成/聚合,即合成/聚合複用原則(CARP);第二種就是經過繼承;
(P29)
「迪米特法則」的定義 —— 若是兩個類之間沒必要直接通訊,則這兩個類不該該發生直接的相互做用。若是其中的一個類須要調用另外一個類的某個方法,能夠經過第三方轉發這個調用;
類之間的耦合越弱,越有利於複用;
(P39)
Java 中沒有虛函數,也能夠說類的每個函數都是虛函數,均可以來重寫 (Override);
(P43)
「工廠方法模式」也有其缺點:每增長一個產品,就要相應地添加一個產品工廠類,增長了額外的開發量;
(P51)
經過「反射」技術可以避免 If 和 Switch 使用的缺點,使得程序的靈活性有大幅度的提升;
(P52)
「抽象工廠」接口肯定了能夠被建立的產品集合,新種類產品的加入須要擴展抽象工廠接口,這就涉及到了接口自己和全部實現類的改變;
(P53)
實踐是學習編程的最好方法;
(P61)
「==」 對於值類型會判斷其值是否相等,而對於引用類型則會判斷引用(內存地址)是否相同,也就是判斷是不是同一個對象;
對於引用類型,「==」 運算符只是調用了對象的 equals 方法;
(P75)
「建造者模式」是面向對象中「多態」特性的一個很是好的應用;
(P169)
抽象方法是必須被子類重寫的,否則編譯器會報錯;
(P264)
通常狀況下,「結構型模式」都是使用繼承機制將接口進行組合以及實現;編程