设计模式——模板方法模式

顾名思义,就是定义了一个类作为模板,在此模板的基础上的具体类实现具体细节。

模板类缺乏具体实现细节,自然要定义成一个抽象类。模板类仅仅给出了一个骨架,具体实现细节由子类决定。
优点[1]:1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。
缺点[1]:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

public abstract class TemplatePattern {
  abstract void doA();
  abstract void doB();
  abstract void doC();

  // 模板一般加final,防止恶意操作
  public final void getItDone () {
      // ...
    doA();
    doB();
    doC();
    // ... something more
  }
}

[1] 来源:模板模式