設計模式-建立型模式-模板方法
定義乙個操作中的演算法框架,將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義乙個演算法的步驟。
protected 對於本包及其子類可見。**如下
public abstract class abstractclass
}
public class concreteclass1 extends abstractclass
protected void dosomething()
}
最後場景類完成呼叫。public class concreteclass2 extends abstractclass
protected void dosomething()
}
// 停車
this.stop();
} // 鉤子
protected boolean isalarm()
}然後擴充套件hummerh1model
public class hummerh1model extends hummermodel
protected void engineboom()
protected void start()
protected void stop()
protected boolean isalarm()
// 要不要響喇叭,由客戶決定
public void setalarm(boolean isalarm)
}
最後定義場景public class hummerh2model extends hummermodel
protected void engineboom()
protected void start()
protected void stop()
protected boolean isalarm()
// 要不要響喇叭,由客戶決定
public void setalarm(boolean isalarm)
}
上方使用了乙個鉤子方法,即hook method 由乙個鉤子,控制了整個的執行,灰常方便。public class client
}
關於父類呼叫子類,不建議這樣做,使用如下做
把子類傳遞到父類的有參的建構函式中,然後呼叫
使用反射呼叫
父類呼叫子類的靜態方法。
總結:父類建立框架,子類重寫父類的部分方法,再呼叫從父類繼承而來的結果,此為模板方法。
或者,當提供提供抽象類,並有一堆子類,需要擴充套件的時候,繼承抽象類,覆寫protected方法,然後呼叫execute方法,完成擴充套件。即可。
ts沒有多少類似的,故不再闡述。
設計模式 建立型模式 模板方法
設計模式 建立型模式 模板方法 定義乙個操作中的演算法框架,將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義乙個演算法的步驟。protected 對於本包及其子類可見。如下 public abstract class abstractclass public class conc...
設計模式 原型 模板方法模式
定義 原型模式 prototype 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。原型模式其實就是從乙個物件再建立另外乙個可定製的物件,而且不需要知道任何建立的細節。以簡歷 resume 影印為例。程式 如下 using system using system.collection...
設計模式 行為型 模板方法模式
定義演算法框架,將一些步驟的實現延遲至子類,就是說把實現某一些功能會有一些重複的共有的步驟,放在公共的類中,將 不同的細節由其子類實現,例如炒菜,都要切菜,放油,和炒菜,但炒不同的菜需要放不同的調味料 定義乙個抽象類,將公共的方法提取出來構建模板方法,不同的則由其子類實現 create by hji...