码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-11-21 22:28:05      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

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

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

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

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

特定环境

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

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

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

一类问题

  • 若干类重复相似逻辑

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

解决方案

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

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

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

优劣

优点:

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

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

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

参考

模板方法模式,作者 :lenotang

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

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

标签:

原文地址:http://www.cnblogs.com/CoolSoul/p/4984834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!