沒有什麼設計模式是完美無缺的,一個設計模式就是解決一類的問題,通常設計模式在解決一類問題的同時,還會帶來别的問題,我們設計者要做的事,就是揚長避短。
1、建立型設計模式,5個===》關注對象的建立
2、結構型設計模式,7個===》關注類與類之間的關系
3、行為設計模式,11個====》關注對象和行為的分離
設計模式六大原則:單一職責、裡氏替換原則、依賴倒置原則、迪米特法則、接口隔離原則、開閉原則。這些隻能叫原則,是建議,沒有實際的招數。
面向對象23中設計模式:
面向對象語言開發過程中,遇到的種種場景和問題,提出了解決方案和思路,沉澱下來就變成了設計模式。
1、建立型設計模式:關注對象的建立
單例模式:
就是限制了對象的建立,重用了對象
原型模式:
換個方式建立對象,不走構造函數,而是記憶體拷貝
三大工廠:
簡單工廠:不直接new出來,把對象建立移到工廠,簡單工廠不屬于23種設計模式
工廠方法:轉移對象的建立,留下了擴充空間
抽象工廠:屏蔽對象的建立;限制強制保障産品簇;建立對象,建立一組密不可分的對象。
2、結構型設計模式:關注類與類之間的關系
縱向關系:繼承≈實作,超強關聯
橫向關系:組合>聚合>關聯>依賴
依賴:出現在方法内部。
組合優于繼承,結構型設計模式的核心。
擴充卡模式:
解決重構的問題,新東西和舊系統不吻合,通過繼承/組合進行适配。
代理模式:
通過代理完成對業務的通路,包一層友善任意功能的擴充
裝飾器模式:
結構型設計模式巅峰之作,組合+繼承,通過組合+繼承,完成對象功能動态擴充。
外觀模式(門面模式)
組合模式
橋接模式
享元模式
多種設計模式,其實就是組合包一層,然後加功能。解決不同的問題,然後有不同的側重點,也有不同的規範。
3、行為型設計模式:關注對象和行為的分離
核心:甩鍋大法,把鍋丢出去,隻管自己,把不穩定的地方移出去,自己隻謝文鼎的,能保證自身的穩定。
模闆方法設計模式:
在基類中定義流程,把可變邏輯分離到不同子類實作
觀察者模式:
一個對象動作觸發多個對象的行為,通過觀察者可以去掉對象的依賴,支援各種已定義和擴充
責任鍊設計模式:
把請求的處理流程,沿着鍊子順序執行,還允許鍊子的擴充和定制
政策模式、疊代器模式........
很多時候,可能會融合應用多個設計模式,分别解決對應的問題。