11種行為型設計模式橫向對比

2021-10-23 19:01:01 字數 2737 閱讀 6407

行為型設計模式主要作用是將乙個複雜的業務流程分解成多個類或物件協作完成。

序號       

模式名稱                               

構成要素作用1

模板方法模式

1、抽象模板類

(包含抽象方法,具體方法,鉤子方法,並在模板方法中呼叫抽象方法,具體方法,鉤子方法)

2、具體子類

(實現抽象模板中的抽象方法和鉤子方法)

分離演算法骨架和特定操作步驟

2策略模式

1、策略類

(提供對應的業務邏輯方法)

2、環境類

(在建構函式中初始化策略類,提setstrategy方法更改策略,提供業務方法,呼叫策略類的業務方法)

分離演算法的使用者和實現者

3命令模式

1、命令類

(在建構函式中獲取實現者,提供execute方法,呼叫實現者的action方法)

2、實現者

(提供action方法,處理業務邏輯)

3、呼叫者

(在建構函式中設定命令類,提供setcommand方法設定命令,提供 call 方法,執行命令類的 execute 方法)

分離業務的實現者和呼叫者

4責任鏈模式

1、抽象處理類

(提供設定 setnext 和獲取 getnext 下乙個具體處理類的方法)

2、具體處理類

(提供處理請求的方法,根據業務引數判斷能否處理請求,不能就將請求轉入下乙個處理者)

3、客戶類

(例項化具體處理者,通過setnext 依次串聯每個具體處理者,呼叫第乙個處理者的請求方法)

分離請求傳送者與請求的處理者

5狀態模式

1、環境類

(在建構函式中初始化當前狀態,提供設定和獲取當前狀態的方法,提供當前狀態的業務邏輯方法)

2、抽象狀態類

(提供乙個方法,封裝環境物件中特點狀態所對應的行為,供環境類呼叫)

3、具體狀態類

(實現抽象狀態所對應的行為,根據不同的狀態做出不同的反應)

把複雜的判斷邏輯提到不同的狀態物件中,從而分離狀態物件

6觀察者模式

1、目標物件

(在建構函式中定義 list 容器。提供新增、刪除觀察者物件的方法,提change方法(呼叫觀察者物件的response))

2、觀察者物件

(提供response方法,根據不同的狀態變化做出不同的反應。)

分離目標與觀察者之間的關係,當乙個狀態發生變化時,所有的觀察者物件自動更新

7中介者模式

1、同事物件

(再抽象類中定義setmedium方法,在子類中提供接收和傳送方法(傳送方法中呼叫中介者的**方法))

2、中介者物件

(提供註冊(呼叫 setmedium方法)和**方法)

降低物件耦合度,將物件之間一對多的關係轉變為一對一的關係

8迭代器模式

1、聚合元素

(在建構函式中定義 list 容器,提供新增、刪除物件的方法,提供獲取迭代器元素的方法。)

2、迭代器元素分離聚合物件和遍歷行為

9訪問者模式

1、訪問者

(提供 visit 訪問方法,根據不同的元素做出不同的反應)

2、元素

(提供 accept 接收訪問者方法,通常在內部呼叫visit,提供getname返回元素的方法)

3、物件結構

(在建構函式中定義 list 用來管理元素,可以新增、刪除、遍歷元素呼叫元素的 accept 方法)

資料的操作(訪問者)和資料元素、資料結構進行分離

10備忘錄模式

1、發起人

(提供set和get方法獲取和設定當前狀態。提供create方法建立備忘錄,提供restore方法恢復備忘錄);

2、備忘錄

(提供set和get方法獲取和設定狀態);

3、管理者

(在建構函式中定義 list 用來儲存狀態。提供 add 方法儲存備忘錄,提供pop方法恢復備忘錄);

發起人、備忘錄、管理者進行分離

11直譯器模式

1、終結符表示式

(在建構函式中定義set容器儲存匹配字段。提供interpret方法判斷是否在匹配字元中);

2、非終結符表示式

(在建構函式中定義傳入字段。提供interpret方法判斷傳入字段是否在匹配字元中)。

3、環境

(在建構函式中定義匹配字段引數,例項化終結符表示式,例項化非終結符表示式,提供業務方法action根據是否匹配做出反應)

終結符與非終結符進行分離

5種建立型設計模式橫向對比

建立型設計模式主要作用是將乙個物件的建立者和使用者分離。序號模式名稱 構成要素作用1 單例模式 1 單例類 提供乙個靜態方法獲取例項物件,判斷例項是否存在,若存在直接返回該例項若不存在則建立新例項 2 訪問類 呼叫單例類的靜態方法,獲取單例物件,呼叫單例物件的業務方法 某些類要求只能建立乙個例項 2...

行為型設計模式

職責鏈模式 使用多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。職責鏈模式結構圖 abstarct class handler處理請求 this.gettype name,request 轉移到下一位 cl...

行為型 設計模式

訪問者模式 資料結構相對穩定,對資料操作可變性強,資料結構提供accept方法接收乙個visitor,不同的visitor有不同的訪問此類資料結構的方法,乙個visitor多個資料 beandefinitionvisitor 或多個visitor乙個資料 模板模式 將演算法的基本步驟抽象到父類,子類...