Head First 設計模式筆記

2022-03-11 13:12:53 字數 647 閱讀 2899

1.找出應用中可能變化的地方,將它們獨立出來。不要和那些不需要變化的部分混在一起;

2.針對介面程式設計,而不是針對實現程式設計;

針對"介面程式設計"的意思是「針對超型別程式設計」,針對介面程式設計關鍵在於多型。利用多型程式設計師可以針對超型別程式設計,編譯器執行會根據實際情況執行到真正的行為,>而不會將超型別綁死,變得更加靈活。程式設計師可以不用關心超型別的實際型別,因為需求可能在不斷變化。

這樣設計,一來可以讓具體的實現動作被其他復用,因為這些動作已經不與任何超類無關,也不會出現鴨子類會飛,而鴨子的子類「橡皮鴨」不會飛這種矛盾。二來》可以新增一些行為,也不會影響到既有的行為類。

3.原則與模式可以應用到軟體生命週期的任何階段;

多用組合,少用繼承;

因為繼承會削弱程式的維護性和可擴充套件性

4.類應該對擴充套件開放,對修改關閉

策略模式定義了演算法簇,分別封裝起來,讓他們之間可以互相替換,此模式的演算法變化獨立於適用演算法的客戶(客戶不需要知道演算法簇執行的內容,只關心他需要的方法是否執行)。

設計是一門藝術,總是有許多可取捨的地方。但是如果你能採用這些經過深思熟慮,並且經受過時間的考驗設計模式,你就能領先別人了。

Head First 設計模式筆記

將變化部分和不變部分分離出來,讓 適應變化 封裝變化 針對介面程式設計,而不是針對實現程式設計 即,將一類行為抽象成行為類介面,可以應對變化,符合原則1 多用組合,少用繼承 這條原則,是建立在原則2的基礎上的,好處是系統有很大的彈性,執行時可以動態改變物件的行為 例如 策略模式 定義演算法簇 學會使...

head first 設計模式 工廠模式筆記

工廠模式 是舉了個做pizza的例子 有pizzastore抽象類裡邊有個pizza物件變數,orderpizza中裡面有個方法 叫做createpizza,同時外面定義了乙個createpizza抽象方法,然後實現裡面有個方法 叫做createpizza,此方法更具不同的引數new不同的對 象,如...

《Head First 設計模式》筆記3

動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。設計原則四 類應該對擴充套件開放,對修改關閉。如果使用過 python,應該聽過裝飾器,雖然概念有點不同,但都是通過動態新增的方式給物件擴充套件功能。星巴克的訂單系統系統中有個飲料抽象類 beverage,店內的飲料都...