模板设计模式其实就是父类控制子类的方法执行顺序,以及对子类中是否需要重新的方法进行控制,就是不需要关心方法的执行的顺序,方法的执行顺序在父类中已经定义好了,子类只需完成方法的具体实现。
总的来说,模板模式就是通过抽象类来定义一个逻辑模板,逻辑框架、逻辑原型,然后将无法决定的部分抽象成抽象类交由子类来实现,一般这些抽象类的调用逻辑还是在抽象类中完成的。这么看来,模板就是定义一个框架,比如盖房子,我们定义一个模板:房子要封闭,有门,有窗等等,但是要什么样的门,什么样的窗,这些并不在模板中描述,这个交给子类来完善,比如门使用防盗门,窗使用北向的窗等等。
下面实例代码:
public abstract class Father {
/**
* 公共逻辑,不需要修改
*/
protected final void m4(){
m1();
m2();
m3();
}
/**
* 公共逻辑
*/
private void m1(){
System.out.println("m1().....");
}
/**
* 具体逻辑,需要子类实现
*/
protected void m2(){
System.out.println("Father m2()....");
}
/**
* 具体逻辑,需要子类实现
*/
protected void m3(){
System.out.println("Father m3()...");
}
}
public class Son extends Father {
@Override
protected void m2() {
System.out.println("Son m2() ...");
}
@Override
protected void m3() {
System.out.println("Son m3() ...");
}
}