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
模板方法模式:课本上的定义–定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
总结:模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势,它提供了一个很好的代码复用平台。
其他例子:参考自《大话设计模式》考题抄错会做也白搭。案例提到多位考生的题目应该抽取到一个类中,同时暴露出提交答案的接口方法供所有考生提交答案。
注:以上文章仅是个人总结,若有不当之处,望不吝赐教