11、模板(Template Method)方法模式
定义:准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。
角色: 抽象模板角色 和 具体模板角色
代码:
/**抽象模板类*/
public abstract class AbstractClass {
/**模板方法声明和实现*/
public void templateMethod(){
//调用基本方法(由子类实现)
doOperation1();
//调用基本方法(由子类实现)
doOperation2();
// 调用基本方法(已经实现)
doOperation3();
}
/**基本方法声明(由子类实现)*/
protected abstract void doOperation1();
/**基本方法声明(由子类实现)*/
protected abstract void doOperation2();
/**基本方法(已经实现)*/
private final void doOperation3(){
//doSomething()
}
}
/*具体模板类*/
public class ConcreteClass extends AbstractClass {
@Override/**基本方法实现*/
protected void doOperation1() {
// doSomething
}
@Override/**基本方法实现*/
protected void doOperation2() {
// doSomething
}
}