本文共 1712 字,大约阅读时间需要 5 分钟。
当我们设计一个类时,我们能明确它对外提供的某个方法的内部执行步骤,但是有一些步骤,不同的子类有不同的行为时,我们应该使用模板方法模式。
具体实现
有一个抽象模板类AbstractClass,其方法分为两类
最佳实践
模板方法模式是通过父类建立框架,子类在重写了父类部分方法之后,在调用从父类继承的方法,产生不同的效果,通过修改子类,影响父类行为的结果,模板方法在一些开源框架中应用非常多,它提供了一个抽象类,然后开源框架写了一堆子类,如果需要扩展功能,可以继承此抽象类,然后覆写protected基本方法,然后在调用一个类似TemplateMethod()的模板方法,完成扩展开发。
模板抽象类:
public abstract class AbstractClass { //让子类去实现特殊的处理逻辑 protected abstract void doAnything(); protected abstract void doSomething(); //模板方法,定义成final,不让子类修改 public final void templateMethod(){ /* * 调用基本方法,完成相关的逻辑 */ this.doAnything(); this.doSomething(); }}
子类1:
public class ConcreteClass1 extends AbstractClass{ @Override protected void doAnything() { //子类实现具体 System.out.println("ConcreteClass1 doAnything"); } @Override protected void doSomething() { System.out.println("ConcreteClass1 doSomething"); }}
子类2:
public class ConcreteClass2 extends AbstractClass{ @Override protected void doAnything() { //子类实现具体 System.out.println("ConcreteClass2 doAnything"); } @Override protected void doSomething() { System.out.println("ConcreteClass2 doSomething"); }}
优点
缺点
转载地址:http://xwpxi.baihongyu.com/