創建型模式:
Singleton 模式解決的是實體對象個數的問題。除了Singleton之外,其他創建型 模式解決都是new 所帶來的耦合關系。
Factory Method,Abstract Factory,Builder都需要一個額外的工廠類來負責實例化“易變對象",而Prototype則是通過原型(一個特殊的工廠類)來克隆"易變對象".
如果遇到"易變類",起初的設計通常從Factory Method開始,當遇到更多的復雜變化時,再考慮重構為其他三種工廠模式(Abstract Factory,Builder,Prototype).
結構型模式:
Adapter模式注重轉換接口,將不吻合的接口適配對接。
Bridge模式注重分離接口與其實現,支持多維度變化。
Composite模式注重統一接口,將"一對多"的關系轉化為"一對一"的關系。
Decorator模式注重穩定接口,在此前提下為對象擴展功能。
Facade模式注重簡化接口,簡化組件系統與外部客戶程序的依賴關系。
Flyweight模式注重保留接口,在內部使用共享技術對對象存儲進行優化。
Proxy模式注重假借接口,增加間接層來實現靈活控制。
行為型模式:
Template Method 模式封裝算法結構,支持算法子步驟變化。
Strategy模式注重封裝算法,支持算法的變化。
State模式注重封裝與狀態相關的行為,支持狀態的變化。
Memento模式注重封裝對象狀態變化,支持狀態保存/恢復 。
Mediator模式注重封裝對象間的交互,支持對象交互的變化。
Chain of Responsibility模式注重封裝對象責任,支持責任的變化。
Command模式注重將請求封裝為對象,支持請求的變化。
Iterator模式注重封裝集合對象內部結構,支持集合的變化。
Interperter模式注重封裝特定領域變化,支持領域問題的頻繁變化。
Observer模式注重封裝對象通知,支持通信對象的變化。
Visitor模式注重封裝對象操作變化,支持在運行時為類層次結構動態添加新的操作。