简介
模板方法模式就是封装了一个固定的流程,流程由几个步骤组成,具体步骤由子类进行实现,每个子类具体实现的内容也不相同,从而让固定的流程产生不同的结果。
抽象模板方法类
public abstract class AbstractTemplate {
public abstract void methodA();
public abstract void methodB();
public void template(){
methodA();
methodB();
}
}
抽象模板方法类中的template
方法封装了固定的流程,而流程中的具体方法由子类去实现。
具体模板方法类
public class ConcreteClass1 extends AbstractTemplate {
@Override
public void methodA() {
System.out.println("具体模板方法类1中的方法A");
}
@Override
public void methodB() {
System.out.println("具体模板方法类1中的方法B");
}
}
public class ConcreteClass2 extends AbstractTemplate {
@Override
public void methodA() {
System.out.println("具体模板方法类2中的方法A");
}
@Override
public void methodB() {
System.out.println("具体模板方法类2中的方法B");
}
}
各个具体的模板方法类中实现了抽象模板方法类中的抽象方法,每个具体的模板方法类中实现的抽象方法的需求也不相同,最终调用固定的流程会产生不同的结果。
测试
public class TemplateDemo {
@Test
public void templateTest(){
ConcreteClass1 concreteClass1 = new ConcreteClass1();
concreteClass1.template();
ConcreteClass2 concreteClass2 = new ConcreteClass2();
concreteClass2.template();
}
}