定義
定義演算法中的操作框架,而將一些步驟延遲到子類別中。使得子類別可以不改變演算法結構即可重定義該演算法的某些特定步驟。
此設計模式的角色分割較為簡單
抽像模版類別
具體模版類別
抽像模版類別又包含了這樣幾個方法:模版方法,具體方法,抽象方法,勾子方法。
模版方法
決定了演算法的實作步驟,該方法中呼叫了具體方法,待實作的抽象方法,勾子方法等。是演算法執行的一個模版。
具體方法
具體方法是演算法中較穩穩定的部分,所以在抽象類別中給出了方法的具體實作。
抽象方法
抽象方法正是定義中所說的延遲到子類別實作的方法。
勾子方法
一般模版方法會給出預設實現,子類別中看情況對這個方法進行覆寫重寫。
/** * Created by tiantian on 2018/7/28 */public abstract class AbstractTemplateMethod { public void templateMethod() { implementedMethod(); abstractMethod(); hookMethod(); // ... more than method invoke } public void anotherTemplateMethod() { // do other things } public abstract void abstractMethod(); public void hookMethod() {} public void implementedMethod() { System.out.println("I have been implemented in TemplateMethod class."); } // ... more than method abstract or implemented.}
/** * Created by tiantian on 2018/7/28 */public class ConcreteTempleteMethod extends AbstractTemplateMethod { @Override public void abstractMethod() { System.out.println("Do something"); } @Override public void hookMethod() { System.out.println("Do something in hookMethod"); } }
定義演算法中的操作框架,而將一些步驟延遲到子類別中。使得子類別可以不改變演算法結構即可重定義該演算法的某些特定步驟。
此設計模式的角色分割較為簡單
#抽像模版類別
特定模版類別
抽像模版類別又包含了這樣幾個方法:模版方法,具體方法,抽象方法,勾子方法。
模版方法
決定了演算法的實作步驟,該方法中呼叫了具體方法,待實作的抽象方法,勾子方法等。是演算法執行的一個模版。
具體方法
具體方法是演算法中較穩穩定的部分,所以在抽象類別中給出了方法的具體實作。
抽象方法
抽象方法正是定義中所說的延遲到子類別實作的方法。
勾子方法
一般模版方法會給出預設實現,子類別中看情況對這個方法進行覆寫重寫。
/** * Created by tiantian on 2018/7/28 */public abstract class AbstractTemplateMethod { public void templateMethod() { implementedMethod(); abstractMethod(); hookMethod(); // ... more than method invoke } public void anotherTemplateMethod() { // do other things } public abstract void abstractMethod(); public void hookMethod() {} public void implementedMethod() { System.out.println("I have been implemented in TemplateMethod class."); } // ... more than method abstract or implemented.}
/** * Created by tiantian on 2018/7/28 */public class ConcreteTempleteMethod extends AbstractTemplateMethod { @Override public void abstractMethod() { System.out.println("Do something"); } @Override public void hookMethod() { System.out.println("Do something in hookMethod"); } }
相關文章:
相關影片:以上是案例詳解java23種設計模式:模版方法模式(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!