TemplateMethod:模板方法模式
先代碼
父類:
package h.l.demo.templatemethod;
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月23日
* @Description: 抽象類
*/
public abstract class AbstractClass {
public abstract void operation1();
public abstract void operation2();
public void TemplateMethod(){
operation1();
operation2();
System.out.println("AbstractClass TemplateMethod...");
}
}
子類(兩個):
package h.l.demo.templatemethod;
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月23日
* @Description: 具體類
*/
public class ConcreteClassA extends AbstractClass {
@Override
public void operation1() {
System.out.println("具體類A方法1實現");
}
@Override
public void operation2() {
System.out.println("具體類A方法2實現");
}
}
package h.l.demo.templatemethod;
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月23日
* @Description: 具體類
*/
public class ConcreteClassB extends AbstractClass {
@Override
public void operation1() {
System.out.println("具體類B方法1實現");
}
@Override
public void operation2() {
System.out.println("具體類B方法2實現");
}
}
測試類:
package h.l.demo.templatemethod;
/**
*
* @author: Is-Me-Hl
* @date: 2020年2月3日
* @Description: 測試
*/
public class TestMainEnter {
public static void main(String[] args) {
AbstractClass abstractClass = new ConcreteClassA();
abstractClass.TemplateMethod();
System.out.println("-------------------------");
abstractClass = new ConcreteClassB();
abstractClass.TemplateMethod();
}
}
測試結果:
後分析
- 個人建議:寫代碼是件幸福的事,So,do it
模板方法模式:課本上的定義–定義一個操作中的算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
總結:模板方法模式是通過把不變行爲搬移到超類,去除子類中的重複代碼來體現它的優勢,它提供了一個很好的代碼複用平臺。
其他例子:參考自《大話設計模式》考題抄錯會做也白搭。案例提到多位考生的題目應該抽取到一個類中,同時暴露出提交答案的接口方法供所有考生提交答案。
注:以上文章僅是個人總結,若有不當之處,望不吝賜教