1.用意
准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法的用意。
2.类图
3.代码
/* * 抽象模板纇 */ public abstract class AbstractClass { public void templateMethod() { //调用基本方法(由子类实现) doOperation1(); //调用基本方法(由子类实现) doOperation2(); //调用基本方法(已经实现) doOperation3(); } /** * 基本方法的声明(由子类实现) */ protected abstract void doOperation1(); /** * 基本方法的声明(由子类实现) */ protected abstract void doOperation2(); /** * 基本方法(已经实现) */ private final void doOperation3() { S.s("doOperation3();"); } } /* * 具體模板纇 */ public class ConcreteClass extends AbstractClass{ @Override protected void doOperation1() { S.s("doOperation1();"); } @Override protected void doOperation2() { //像下麵這樣的調用不應當發生 //doOperation3(); S.s("doOperation2();"); } } /* * 測試類 */ public class Test { public static void main(String[] args) { AbstractClass ac = new ConcreteClass(); ac.templateMethod(); } }
z