Please enable JavaScript.
Coggle requires JavaScript to display documents.
Design Pattern in Typescript (Behavioral design patterns (解譯器模式…
Design Pattern in Typescript
Behavioral design patterns
策略模式
定義 : 定義多個實作介面,各別封裝這些演算法,並讓它們可以互換使用者想要的介面。
一個介面衍伸N個實作,一個物件建構子代入介面。
將實作介面代入欲生成的物件<多型>
解譯器模式
定義:定義一個表示法,使用表示法來解釋(翻譯)語言中的句子
準備一個解譯後(output)模組
一個介面實作多個解譯模組/解析方式
使用者根據想要的解譯方式,取得解譯資料
這一部可參考策略模式進行
自稱 : 封包解析模式
像是三菱的、Modbus的、RS485的封包,各自有自己的解譯方式。
職責練模式
定義 : 根據條件來定義一個有責任的接收者,以處理一個請求或將其轉發給鏈上的下一個接收者(如果有的話)
一個介面衍伸N個實作(工作者),從首個工作者指派下一個工作者
做完就跳出,沒有則繼續找,找到結束
:!: 需要強烈必須注意 職責練的輪迴,否則會無窮迴圈!!!!!
中介模式
定義 : 定義一個封裝了各組互動的對象的中介者,使這些對象避免明確直接引用來解除耦合度
並且可以獨立地改變他們的互動的方式
中介者
需要了解目前所有的合作者,並實作
從新定義處理邏輯
合作對象
建立一個中介者,如平均、權重中介者等
設定原本該有的處理邏輯-合作者方式
Creational design patterns
工廠模式
定義 :讓工廠類別(Factory Class)去做建立物件的細節
至於使用者只要使用Factory去建立需要的物件
不需要知道物件怎麼建立的,或是細節。
泛型工廠
靜態工廠
抽象工廠
靜態工廠
摳靜態方程式
分別提供靜態方程式給摳
泛型工廠
抽象工廠
用策略模式實作抽象類別,各類別各自實作Create()
回傳值為想要的物件
建造者模式
定義 : 與工廠不一樣在於,一步一步建造
建造者
列出所有的工作項目
初始化
工作
包裹
觀察者
統整工作項目SOP
指派建造者
利用物件Call by reference去丟工作包裹
工作
定義一個Module,將來要完成的工作
組合模式
定義 : 組合模式可以表示單一和群體階層(Part-whole hierarchy)的關係
而群體為這單一物件的相同型別集合,他們有著相同的行為。
看你來像一棵樹
裝飾者模式
定義 : 裝飾者模式可在不繼承原有類別情況下,對原類別加強或新增功能。
被裝飾者
基底的價格,定好標準
裝飾者
將
被裝飾者
附加額外的元素
Structural design patterns
外觀模式
定義:封裝商業邏輯並提供簡單介面,以達到易使用、可讀性、減少依賴的目的
將複數個邏輯,寫入同一個function裡
橋接模式
定義 : 分離Abstraction及Implementor,使兩者可獨立變化。
在run time設定Abstraction裡的Implementor
兩者實作都採用策略模式
abstraction : 使用implementor定義的方式
implementor : 純粹定義方式
裝飾者模式與策略模式組合餐
配接模式
定義 : 通過轉換已經存在類別的接口以適應而不改變它。
繼承配接
組合配接 is best !!
也許解譯器模式可以解決這一切,但是剛好有個例外
他需要前置處理,像是降壓之類的
降壓完後,才能供給公用的解譯器模式轉接
不改變原有的介面
代理者模式
定義 : 提供一個代理者操作原有的處理
通常延伸裝飾者模式的功能
延伸的功能多寫一個物件會浪費掉