C# 決戰設計模式筆記

1. Facade (功能類似自訂 Utilities,簡化介面、簡化子系統)
2. Adapter (切換兩個不同SDK,適應子系統)
3. 責任鏈 (多個物件串成一條鏈,並從頭開始找可能被處理的物件,可能中途返回,不一定會跑到底)
4. Factory (集中產生instance)
5. Template Method (只定義演算法流程)
6. 狀態模式 由自己決定下一個實作(適合固定順序)
7. 策略模式 由外部決定用哪一種實作(適合無序)
8. Prototype 自己可複製 (也可用序列化(有些無法)或反射來clone)
9. Memento (一個管理儲存跟回復儲存狀態,通常會跟Phototype搭配使用)
10. Decorator (包另一個已存在功能,用來增加職責、附加功能)
11. Proxy (delegate mode,用來控制存取及對Client隱藏具體物件資訊)
12. Builder (由不同director組裝不同順序builder,或只做某些builder)
13. Command(隔離receiver由command中介receiver與呼叫者(Invoke),將相同傳入傳出參數,但不同方法名稱,抽象成同一個抽象方法,也是可能是責任鏈的前奏)
14. Bridge (實作拉出去,再以抽象元件方式(proeprty) 組合在一起)
15. Observer (event and delegate 實作事件通知,用來連動,需小心memory leak)
16. Mediator (中介者、協調者模式 ,可用來協調各個Observer)
17. Iterator (可被forEach)
19. Visitor (用來分離資料結構與操作,有Double dispatch問題,不適用於Visitor會變多或變小的情境,用 extension 擴充方法好很多)
20. Singleton (單例,提供統一窗口管理)
21. Flyweight(註冊表,用來節省記憶體,用hash或dictionary來存type instance,如果沒有產生,有則返回產生過的instance)
22. Composite(將類似操作的物件建立關係,以共用抽象來一視同仁,利用多型的特性來消滅判斷式,client不需知道不同物件的實作)
23. Interpreter (用來解釋語言,將解釋的字串交給合適的解譯器)

> 補充:
> 1. 採用建構子注入的意圖通常都是不變性 getter or private set)
> 2. 採用屬性注入的意圖,通常會在Runtime改變

創作者介紹
創作者 小賢 的頭像
小賢

小賢的部落格

小賢 發表在 痞客邦 留言(0) 人氣()