Day 29: 23 + 1 個模式的總結
Creational patterns - Summary
主旨
「物件導向設計模式」定義為:
將物件具現化的過程抽下樣話地加以萃取,使系統能獨立於物件的建立、組成及表現方式之外。
屬於此類別的模式
此類別的模式專注在如何製作物件。
- 入門 -> Simple Factory Method。
- 了解使用
switch
產生類別及為一種模式。
- 了解使用
- 初階應用 -> 衍生出子類別(子代)-> Factory Method。
- 需要新的子類別,重新定義、製作即可完成。
- 進階應用 -> 採取複合策略
- 用產品物件的種類來定義、生產物件 -> Abstract Factory。
- 定義複雜的生產過程,確保最後能取得複雜的物件 -> Builder。
- 了解、學習如何完整複製物件 -> Prototype。
- 異數 -> 沒有生產物件,確保系統內只存在一個物件 -> Singleton。
Structural patterns - Summary
主旨
「物件導向設計模式」定義為:
探討如何以類別(class)和物件的組合成大型的結構。
屬於此類別的模式
此類別的模式往往有特定的使用場合。
- 解決既有物件之間,介面(對外窗口)不相容的問題 -> Adapter。
- 開發前了解會有多個商業邏輯,因此設計出可以搭配多個商業邏輯的介面 -> Bridge。
- 從單一物件到組織類別的物件都有相同的結構,不用額外添加處理方式 -> Composite。
- 不打算繼承產生子類別好增加新的方法 -> Decorator。
- 使用一個大物件代表整體系統 -> Facade。
- 在乎記憶體使用的效率所以共享物件 -> Flyweight。
- 提供一個間接存取層,可限制、增強、改變幕後物件的屬性 -> Proxy。
Behavioral patterns - Summary
主旨
「物件導向設計模式」定義為:
探討物件之間的演算法、權責分配問題以及溝通方式。
屬於此類別的模式
此類別的模式往往帶有強烈的使用目的。
- 讓多個物件都有機會處理某一訊息,以降低訊息發送者和接收者之間的耦合關係 -> Chain of Responsibility。
- 將行為轉變成物件,以便有儲存、刪除、暫停、復原等操作 -> Command。
- 學習轉化、解譯特定訊息 -> Interpreter。
- 實作
forEach()
-> Iterator。 - 將物件之間的溝通集中起來 -> Mediator。
- 使用特定物件「儲存」另一個物件在某個時刻的內部狀態 -> Memento。
- 當多個物件需要「監聽」特定物件的狀態變化 -> Observer。
- 當物件的方法會隨著「自身的狀態」改變執行細節 -> State。
- 當物件的方法會隨著「帶入的參數」不同而有不同的執行細節 -> Strategy。
- 物件大部分的結構、方法都完成,部分方法的細節部分隨著不同的情境而有不同的執行細節 -> Template Method。
- 當有相似結構的「物件們」需要增加相同名稱但是不同執行細節的方法 -> Visitor。