設計模式(7)模板模式 行為型

2021-07-23 20:14:23 字數 1204 閱讀 4759

在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。

實現了模板方法,定義了演算法的骨架。

實現抽象類中的抽象方法,已完成完整的演算法。

模板方法模式算是比較好理解的一種模式。簡單示例如下:

public

abstract

class template

public

abstract

void

step1();

public

void

step2()

public

abstract

void

step3();

}

public

class

templatea

extends

template

public

void

step3()

}

public

class

templateb

extends

template

public

void

step3()

}

public

class client

}

在模板模式中,存在乙個空實現的方法,我們稱這種方法為」hook」。子類可以視情況來決定是否要覆蓋它。

1.模板方法定義了演算法的步驟,把這些步驟的實現延遲到子類

2.為我們提供了一種**復用的重要技巧

3.抽象類可以定義具體方法、抽象方法和鉤子

4.鉤子是一種方法,它在抽象類中不做事,或者只做預設的事情,子類可以選擇要不要去覆蓋它。

5.為了防止子類改變模板方法中的演算法,可以將模板方法宣告為final

6.將決策權放在高層模組中,以便決定如何以及何時呼叫低層模組

7.策略模式和模板方法模式都封裝演算法,乙個用組合,乙個用繼承

8.工廠方法是模板方法的一種特殊版本

oo另類原則:別呼叫我們(高層元件),我們會呼叫你(低層元件)。

行為型設計模式之模板方法模式

行為型設計模式之模板方法模式 定義乙個操作中的演算法骨架,而將這些步驟延伸到子類中去,使得子類可以不改變乙個演算法的結構,即可重新定義改演算法的某些特定步驟 這裡復用的是演算法結構,步驟的具體實現可以由子類完成 模板方法模式參與角色 父類角色 提供模板 定義操作的所有流程 子類角色 為模板某些方法提...

行為型設計模式

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

行為型 設計模式

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