模板方法模式
定义
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
示例
模板抽象类
public abstract class MyTemplate {
public abstract void start();
public abstract void stop();
public void process(){
start();
stop();
}
}
模板实现类A
public class MyTemplateImplA extends MyTemplate {
@Override
public void start() {
System.out.println("A汽车启动");
}
@Override
public void stop() {
System.out.println("A汽车停止");
}
}
模板实现类B
public class MyTemplateImplB extends MyTemplate{
@Override
public void start() {
System.out.println("B汽车启动");
}
@Override
public void stop() {
System.out.println("B汽车停止");
}
}
测试类
public class MyTemplateTest {
public static void main(String[] args) {
MyTemplate templateCar = new MyTemplateImplA();
templateCar.process();
templateCar = new MyTemplateImplB();
templateCar.process();
}
}
分析
- 通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,如大话设计模式中说到的考试场景中,每个人的试卷都是一样的,只有答案不一样。这种场景就适合于模板方法模式。我这次自己写的是一个汽车启动的过程,每一种汽车启动的过程都基本是一样的流程,无非是这一过程中存在一些细小差别。
- 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。