Template Method(模板方法)-類(lèi)行為模式 - 設(shè)計(jì)模式
1. 意圖
定義一個(gè)操作中的算法的骨架. 而將一些步驟延遲到子類(lèi)中.
它使得子類(lèi)可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟.
2. 動(dòng)機(jī)

3. 適用性
一次性實(shí)現(xiàn)一個(gè)算法的不變部分. 并將可變部分的行為留給子類(lèi)去實(shí)現(xiàn).
各子類(lèi)中公共的行為應(yīng)被提取出來(lái)并集中到一個(gè)公共父類(lèi)中以避免代碼重復(fù).
控制子類(lèi)擴(kuò)展. 模板方法只在特定點(diǎn)調(diào)用"hook"操作.只允許子類(lèi)擴(kuò)展這些地方.
4. 結(jié)構(gòu)圖

5. 參與者
AbstractClass(抽象類(lèi))
----定義抽象的原語(yǔ)操作(Primitive operation).具體的子類(lèi)將重新定義這些原語(yǔ)操作.
----實(shí)現(xiàn)一個(gè)模板方法.定義算法的骨架. 在模板方法里會(huì)調(diào)用原語(yǔ)操作.
ConcreteClass(具體類(lèi))
----實(shí)現(xiàn)原語(yǔ)操作以完成算法中與特定子類(lèi)相關(guān)的步驟.