Observer 觀察者模式

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

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

more

Responsibility 責任鏈模式

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

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

more

Command 命令模式

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

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

more

Composite 組合模式

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

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

more

Flyweight 享元模式

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

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

more

Builder 建造者模式

「將一個複雜物件的建構流程,與它的物件兵現分離出來,讓相同的建構流程可以產生不同的物件行為表現」

將複雜的建構流程獨立出來,並將流程分成幾個步驟,最後將這些步驟串接起來
定義實現這些步驟的實作者,實作者知道每一步驟該如何完成,但不需要知道組裝流程

more

Factory Method 工廠方法模式

「定義一個可以產生物件的介面,但是讓子類別決定要產生那一個類別的物件。工廠方法模式讓類別的實例化程序延遲到子類別中實行」

將類別「產生物件的流程」集合管理,以有組織、有規則的方式來生產物件

more

Template Method 樣版方法模式

「在一個操作方法中定義演算法的流程,當中某些步驟由子類別完成。樣版方法模式讓子類別在不更動原有演算法的流程下,還能夠重新定義當中的步驟」

定義演算法的每一個步驟,一個步驟是一個方法的呼叫,並寫在父類別,讓某些步驟由子類別來完成

more

Strategy 策略模式

「定義一群演算法,並封裝每個演算法,讓它們可以彼此交換使用。策略模式讓這些演算法在客戶端使用它們時能更加獨立」

不同的計算方式就是「演算法」,將「計算細節」加以封裝隱藏起來。
客戶端只需要依情況選擇對應的「演算法」類別,至於計算方式及規則,客戶端不需要去理會。

more

Bridge 橋接模式

「將抽象與實作分離,讓它們之間的變化獨立」

定義一個介面類別,然後將實作的部分在子類別中完成。
客戶端只需要知道「介面類別」的存在,不必知道是由那一個實作類別來完成功能。

more

開發遊戲實例 - Mediator 仲介者模式

在開發百家樂遊戲的時候
前端使用 AngularJS 負責資料傳遞
利用雙向綁定去處理資料及畫面的呈現
能降低開發量及減少錯誤
所有的資料及動作都是經由 AngularJS 控制
而 AngularJS 就類似 仲介者 的角色

more

Mediator 仲介者模式

「定義一個介面用來包裝一群物件的互動行為。仲介者藉由移除物件間的引用,來減少它們之間的耦合度,並且能讓你改變它們之間的互動獨立性」

作為系統間的溝通介面,讓系統之間的耦合度降低,提升系統的可維護性

more