將變化部分和不變部分分離出來,讓**適應變化;(封裝變化)
針對介面程式設計,而不是針對實現程式設計;(即,將一類行為抽象成行為類介面,可以應對變化,符合原則1)
多用組合,少用繼承;(這條原則,是建立在原則2的基礎上的,好處是系統有很大的彈性,執行時可以動態改變物件的行為——例如:策略模式 『定義演算法簇』)
學會使用共享模式詞彙,簡化溝通;
建立彈性的設計,可以維護,可以應對變化;
高內聚、松耦合;
類應該對擴充套件開發,對修改關閉(ocp——開放關閉原則)
策略模式:定義演算法簇,分別封裝起來,這些演算法可以相互替換,讓使用者與演算法(即行為)進行分類,同一使用者在不同的場景中,使用不同的演算法。(有點向人多年形成的各種經驗,每種經驗都有各自的適用場景,不能用一招而致天下敵);
觀察者模式:出版者(publisher)[負責發布主題] + 訂閱者(subscriber)[負責註冊主題和接收主題及取消註冊];如一種微服務間通訊框架pubsub機制。屬於一對多的關係,當乙個物件狀態改變,其他依賴者都會受到通知。
3、裝飾者模式,動態地將責任附加到物件上。
Head First 設計模式筆記
1.找出應用中可能變化的地方,將它們獨立出來。不要和那些不需要變化的部分混在一起 2.針對介面程式設計,而不是針對實現程式設計 針對 介面程式設計 的意思是 針對超型別程式設計 針對介面程式設計關鍵在於多型。利用多型程式設計師可以針對超型別程式設計,編譯器執行會根據實際情況執行到真正的行為,而不會將...
head first 設計模式 工廠模式筆記
工廠模式 是舉了個做pizza的例子 有pizzastore抽象類裡邊有個pizza物件變數,orderpizza中裡面有個方法 叫做createpizza,同時外面定義了乙個createpizza抽象方法,然後實現裡面有個方法 叫做createpizza,此方法更具不同的引數new不同的對 象,如...
《Head First 設計模式》筆記3
動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。設計原則四 類應該對擴充套件開放,對修改關閉。如果使用過 python,應該聽過裝飾器,雖然概念有點不同,但都是通過動態新增的方式給物件擴充套件功能。星巴克的訂單系統系統中有個飲料抽象類 beverage,店內的飲料都...