Head First 設計模式 讀書筆記
阿新 • • 發佈:2019-02-19
1、 使用模式最好的方式:把模式裝進腦子中,然後在你的設計中和已有的應用中,尋找何處可以使用這些模式。
2、 對程式碼所做的區域性修改,影響層面不只是區域性(會飛的橡皮鴨子)。
3、 當涉及“維護”時,為了“複用”目的而使用繼承,結局並不完美。
4、 不變的是變化。
5、 設計原則一:找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的程式碼混在一起。
6、 設計原則二:針對介面程式設計,而不是針對實現程式設計。
7、 針對超型別(介面)程式設計:變數的宣告型別應該是超型別,通常是一個抽象類或者是一個介面,如此,只要是具體實現此超型別的類所產生的物件,都可以指定給這個變數。
8、 觀察者模式:讓你的物件知悉現狀。
9、 利用觀察者模式,主題是具有狀態的物件,並且可以控制這些狀態。另一方面,觀察者使用這些狀態,雖然這些狀態並不屬於他們。“一個”主題對“多個”觀察者。。
10、 觀察者模式:主題是真正擁有資料的人,觀察者是主題的依賴者,在資料變化時更新,這樣比起讓許多物件控制同一份資料來,可以得到更乾淨的OO設計。
11、 設計原則三:多用組合,少用繼承。
12、 儘管繼承威力強大,但它並不總數能夠實現最有彈性和最好維護的設計:利用繼承設計子類的行為,是在編譯時靜態決定的,而且所有的子類都會整合到相同的行為。然而,如果鞥個利用組合的做法擴充套件物件的行為,就可以在執行時動態地進行擴充套件。
13、 設計原則四:對擴充套件開放,對修改關閉:這樣的設計具有彈性可以應對改變,可以接受新的功能來應對改變的需求。
14、 裝飾者模式:
a) 裝飾者和被裝飾者物件有相同的超型別。
b) 可以用一個或多個裝飾者包裝一個物件。
c) 在任何需要院士物件的場合,可以用裝飾過的物件代替它。
d) 裝飾者可以在所委託被裝飾者的行為之前與、或之後,加上自己的行為,以達到特定的目的。
e) 物件可以在任何時候被裝飾,所以可以在執行時動態地、不限量地用你喜歡的裝飾者來裝飾物件。
15、 裝飾者模式:動態地將責任附加到物件上。想要擴充套件功能,裝飾者提提供有別於繼承的另一種選擇。
16、 OO 原則:封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的鬆耦合設計而努力 對擴充套件開放,對修改關閉。
17、 策略模式:定義了演算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。
2、 對程式碼所做的區域性修改,影響層面不只是區域性(會飛的橡皮鴨子)。
3、 當涉及“維護”時,為了“複用”目的而使用繼承,結局並不完美。
4、 不變的是變化。
5、 設計原則一:找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的程式碼混在一起。
6、 設計原則二:針對介面程式設計,而不是針對實現程式設計。
7、 針對超型別(介面)程式設計:變數的宣告型別應該是超型別,通常是一個抽象類或者是一個介面,如此,只要是具體實現此超型別的類所產生的物件,都可以指定給這個變數。
8、 觀察者模式:讓你的物件知悉現狀。
9、 利用觀察者模式,主題是具有狀態的物件,並且可以控制這些狀態。另一方面,觀察者使用這些狀態,雖然這些狀態並不屬於他們。“一個”主題對“多個”觀察者。。
10、 觀察者模式:主題是真正擁有資料的人,觀察者是主題的依賴者,在資料變化時更新,這樣比起讓許多物件控制同一份資料來,可以得到更乾淨的OO設計。
11、 設計原則三:多用組合,少用繼承。
12、 儘管繼承威力強大,但它並不總數能夠實現最有彈性和最好維護的設計:利用繼承設計子類的行為,是在編譯時靜態決定的,而且所有的子類都會整合到相同的行為。然而,如果鞥個利用組合的做法擴充套件物件的行為,就可以在執行時動態地進行擴充套件。
13、 設計原則四:對擴充套件開放,對修改關閉:這樣的設計具有彈性可以應對改變,可以接受新的功能來應對改變的需求。
14、 裝飾者模式:
a) 裝飾者和被裝飾者物件有相同的超型別。
b) 可以用一個或多個裝飾者包裝一個物件。
c) 在任何需要院士物件的場合,可以用裝飾過的物件代替它。
d) 裝飾者可以在所委託被裝飾者的行為之前與、或之後,加上自己的行為,以達到特定的目的。
e) 物件可以在任何時候被裝飾,所以可以在執行時動態地、不限量地用你喜歡的裝飾者來裝飾物件。
15、 裝飾者模式:動態地將責任附加到物件上。想要擴充套件功能,裝飾者提提供有別於繼承的另一種選擇。
16、 OO 原則:封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的鬆耦合設計而努力 對擴充套件開放,對修改關閉。
17、 策略模式:定義了演算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。