用途

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

要素

  • AbstractClass:包含没有方法体的抽象方法,和有方法体的调用抽象方法的模板方法。抽象方法需要子类去实现,模板方法由子类直接继承。
  • ConcreteClass:是AbstractClass的子类,实现抽象方法,继承模板方法
  • 示例图:

Xnip2019-09-12_07-16-44.jpg

优缺点

  • 封装不变部分,扩展可变部分
  • 提取公共代码,便于维护