通俗一点讲:在现实生活中,我们把规定了流程或者格式的实例定义为模版,允许使用者在使用的时候,根据自己个人的需求来去更新它。 代码如下:
public class Template {
public static void main(String[] args) {
AbstractClass class1 = new ConcreteClass1();
AbstractClass class2 = new ConcreteClass2();
//调用模板方法
class1.templateMethod();
class2.templateMethod();
}
}
abstract class AbstractClass {
//基本方法
protected abstract void doSomething();
//基本方法
protected abstract void doAnything();
//模板方法
public final void templateMethod(){
/*
* 调用基本方法,完成相关的逻辑
*/
this.doAnything();
this.doSomething();
}
}
class ConcreteClass1 extends AbstractClass {
//实现基本方法
protected void doAnything() {
//业务逻辑处理
System.out.println("any111");
}
protected void doSomething() {
//业务逻辑处理
System.out.println("some111");
}
}
class ConcreteClass2 extends AbstractClass { //实现基本方法
protected void doAnything() {
//业务逻辑处理
System.out.println("any222");
}
protected void doSomething() {
//业务逻辑处理
System.out.println("some222");
}
}
注意:一般模板方法都加上 final 关键字, 防止子类重写模板方法