定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
抽象模板(abstract template):定義了乙個或多個抽象操作,以便讓子類實現
。
具體模板(concrete template):實現父類所定義的乙個或多個抽象方法
基本方法: 也叫做基本操作
,由子類實現的方法
,並且在模板方法被呼叫。
模板方法: 可以有乙個或幾個
, 一般是具體方法
,也就是骨架
,實現對基本方法的排程
,完成固定的邏輯
.為了防止惡意操作
,一般模板方法會加上final關鍵字,不允許被覆寫。
鉤子方法:由抽象類宣告並加以實現。但是子類可以去擴充套件,子類決定某些演算法步驟是否掛鉤在抽象類演算法中。
} //基本方法—具體方法
public final void method1()
//基本方法—抽象方法
public abstract void method2();
//基本方法—鉤子方法
public boolean method3()
//基本方法—具體方法
public final void method4()
}
具體模板(concrete template):1.多個子類有公共方法,並且邏輯基本相同class concreteclass : abstractclass
public override boolean method3()
}
2.對複雜的演算法,核心演算法設計為模板方法,細節功能則由各個子類實現
3.重構**
主要優點有:
1.封裝不變部分,擴充套件可變部分
2.提取公共部分**,便於維護
3.行為由父類控制,子類實現
JavaScript設計模式九(模板方法模式)
定義 模板方法模式是一種只需要使用繼承就可以實現的非常簡單的模式 模板方法模式由兩部分組成,第一部分是抽象父類,另一部分是具體的實現子類。通常抽象父類中封裝了子類的演算法框架,包括實現一些公共的方法以及封裝子類中所有方法的執行順序。子類通過繼承這個類,然後繼承了這個演算法,然後重寫父類的方法 例子是...
設計模式之模板方法模式(九)
模板方法模式是將公用的 抽取到父類,並定義可變部分由子類實現的一種模式。玩家玩遊戲的時候會給角色配置服裝,那麼不可避免給每個玩家都例項乙個player物件,並且設定服裝。package com.rabbit.pattern.template created by vip on 2018 3 9.pu...
九 模板方法模式
1.什麼是模板方法模式 定義乙個操作中演算法的骨架,而將一些步驟延遲到子類中。2.為什麼要用模板方法模式 模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模板方法模式是通過把不變行為搬遷的超類,去除子類中的重複 來體現它的優勢,它提供了乙個很好的 復用平台。3.怎樣用模板...