理解设计模式(模板方法)

  模板方法模式,定义算法骨架及其执行顺序,延伸至子类实现算法逻辑。

模板方法、基本方法和钩子方法

  • 基本方法:实现算法各步骤的逻辑

  • 模板方法:组合所有基本方法,规定其顺序

  • 钩子方法:决定如何整合各个算法步骤

根据实际环境的不同,算法逻辑会反生变化

使用钩子方法,来标记这些变化,随之改变算法的逻辑
(主要改变是算法步骤执行与否和彼此间执行顺序

特定环境

  • 算法结构稳定,即若干类逻辑相似

  • 相同逻辑部分可提取成父类基本方法,不同部分留给子类实现

  • 按业务或环境不同,不同部分能够相应变化(钩子方法的不同实现,子类逻辑发生变化)

一类问题

  • 若干类重复相似逻辑

  • 业务要求实现某领域算法

解决方案

模板方法模式,2个角色:

  • 模板类 — 规范算法骨架,封装基本方法、模板方法和钩子方法
    其中,模板方法应定义为final,防止子类修改
    一般由抽象类或接口实现

  • 业务类 — 实现业务逻辑的模板类的具体子类
    按业务需要,补充基本方法、钩子方法的逻辑

优劣

优点:

  • 重构若干逻辑相似的类,避免代码重复
  • 符合开闭原则,能够扩展算法的逻辑

劣势:
同一算法的延伸过多时,要考虑相同部分和不同部分之间的比重

若前者比重太小,那么重构这些类,就不一定值得了

参考

模板方法模式,作者 :lenotang

(Template Method)模板方法模式的Java实现,作者 : haolloyin

posted @ 2015-11-21 21:45  coolsoul  阅读(235)  评论(0编辑  收藏  举报