Proxy 代理模式

「提供一個代理者位置給一個物件,好讓代理者可以控制存取這個物件」

代理者有是否執行原始物件功能的權限,有過濾的功能,而且不必修改原始類別

more

Adapter 轉換器模式

「將一個類別的介面轉換成為客戶端期待的類別介面。轉接器模式讓原本介面不相容的類別能一起合作」

在不破壞介面的前提下,設計一個轉接器來進行轉換

more

Decorator 裝飾模式

「動態地附加額外的責任給一個物件。裝飾模式提供了一個靈活的選擇,讓子類別可以用來擴展功能」

應用在「目標已經存在,而裝飾需求之後才出現」,避免更動已經實作的類別,可方便地組裝及加入新增的效果

more

Visitor 訪問者模式

「定義一個能夠實行在一個物件結構中對於所有元素的操作。訪問者讓你可以定義一個新的操作,而不必更動到被操作元素的類別介面」

利用訪問者類別的方式,走訪每一個角色物件並執行特定功能

more

Memento 備忘錄模式

「在不違反封裝的原則下,取得一個物件的內部狀態,並保留在外部,讓該物件可以在日後恢復到原先保留的狀態」

用來記錄物件狀態的模式,由物件主動提供要存檔的資料給存檔功能,也可從存檔功能取回資料

more

Observer 觀察者模式

「在物件之間定義一個一對多的連接方法,當一個物件變換狀態時,其他關聯的物件都會自動收到通知」

設定一個主題,讓這個主題發佈事件時,可通知多個訂閱者,主題不必理會後續動作是否執行

more

Responsibility 責任鏈模式

「讓一群物件都有機會來處理一項請求,以減少請求發送者與接收者之間的耦合度。將所有的接收者物件串接起來,讓請求沿著串接傳遞,直到有一個物件可以處理為止」

一群能處理問題的物件,依序去試著解決問題
如果物件本身無法解決問題時,就交由下一個物件解決

more

Command 命令模式

「將請求封裝成為物件,讓你可以將客戶端的不同請求參數化,並配合佇列、記錄、復原等方法來操作請求」

將請求封裝成為物件,即為命令,再執行命令去呼叫類別的函式
透過命令的操作,可達到行為的儲存及記錄

more

Composite 組合模式

「將物件以樹狀結構組合,用以表現部分-全體的階層關係。組合模式讓客戶端在操作個別物件或組合物件時是一致的」

定義子節點與父節點的建立關係及順序
這兩種節點都是繼承自同一個操作介面

more

Flyweight 享元模式

「使用共享的方式,讓一大群小規模物件能更有效地運作」

統一管理「大量而且重覆的物件」,讓可以被共享的資料,只需要產生一份物件

more