在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。
實現了模板方法,定義了演算法的骨架。
實現抽象類中的抽象方法,已完成完整的演算法。
模板方法模式算是比較好理解的一種模式。簡單示例如下:
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乙個資料 模板模式 將演算法的基本步驟抽象到父類,子類...