Design Pattern in Typescript

Behavioral design patterns

Creational design patterns

Structural design patterns

策略模式

定義 : 定義多個實作介面,各別封裝這些演算法,並讓它們可以互換使用者想要的介面。

一個介面衍伸N個實作,一個物件建構子代入介面。

將實作介面代入欲生成的物件<多型>

解譯器模式

定義:定義一個表示法,使用表示法來解釋(翻譯)語言中的句子

準備一個解譯後(output)模組

自稱 : 封包解析模式

一個介面實作多個解譯模組/解析方式

使用者根據想要的解譯方式,取得解譯資料

像是三菱的、Modbus的、RS485的封包,各自有自己的解譯方式。

職責練模式

這一部可參考策略模式進行

定義 : 根據條件來定義一個有責任的接收者,以處理一個請求或將其轉發給鏈上的下一個接收者(如果有的話)

一個介面衍伸N個實作(工作者),從首個工作者指派下一個工作者

做完就跳出,沒有則繼續找,找到結束

❗ 需要強烈必須注意 職責練的輪迴,否則會無窮迴圈!!!!!

外觀模式

定義:封裝商業邏輯並提供簡單介面,以達到易使用、可讀性、減少依賴的目的

將複數個邏輯,寫入同一個function裡

橋接模式

定義 : 分離Abstraction及Implementor,使兩者可獨立變化。

在run time設定Abstraction裡的Implementor

abstraction : 使用implementor定義的方式

implementor : 純粹定義方式

兩者實作都採用策略模式

配接模式

定義 : 通過轉換已經存在類別的接口以適應而不改變它。

繼承配接

組合配接 is best !!

也許解譯器模式可以解決這一切,但是剛好有個例外

他需要前置處理,像是降壓之類的

降壓完後,才能供給公用的解譯器模式轉接

工廠模式

定義 :讓工廠類別(Factory Class)去做建立物件的細節

至於使用者只要使用Factory去建立需要的物件

不需要知道物件怎麼建立的,或是細節。

泛型工廠

靜態工廠

抽象工廠

靜態工廠

摳靜態方程式

分別提供靜態方程式給摳

泛型工廠

抽象工廠

用策略模式實作抽象類別,各類別各自實作Create()

回傳值為想要的物件

建造者模式

定義 : 與工廠不一樣在於,一步一步建造

建造者

觀察者

列出所有的工作項目

工作

定義一個Module,將來要完成的工作

初始化工作包裹

統整工作項目SOP

指派建造者

利用物件Call by reference去丟工作包裹

組合模式

定義 : 組合模式可以表示單一和群體階層(Part-whole hierarchy)的關係

而群體為這單一物件的相同型別集合,他們有著相同的行為。

看你來像一棵樹

裝飾者模式

定義 : 裝飾者模式可在不繼承原有類別情況下,對原類別加強或新增功能。

被裝飾者

裝飾者

裝飾者模式與策略模式組合餐

被裝飾者附加額外的元素

基底的價格,定好標準

代理者模式

定義 : 提供一個代理者操作原有的處理

通常延伸裝飾者模式的功能

延伸的功能多寫一個物件會浪費掉

不改變原有的介面

中介模式

定義 : 定義一個封裝了各組互動的對象的中介者,使這些對象避免明確直接引用來解除耦合度

並且可以獨立地改變他們的互動的方式

中介者

合作對象

建立一個中介者,如平均、權重中介者等

設定原本該有的處理邏輯-合作者方式

需要了解目前所有的合作者,並實作

從新定義處理邏輯