模板方法模式

原文地址: http://www.cnblogs.com/wangjq/archive/2012/07/09/2582978.html

1. 概述
  定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。
2. 模式中的角色
  2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
  2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。
3. 模式解读
  3.1 模板方法类图

  

4. 模式总结
  4.1 优点
    4.1.1 模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。
    4.1.2 子类实现算法的某些细节,有助于算法的扩展。
    4.1.3 通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则”。
  4.2 缺点
    4.2.1 每个不同的实现都需要定义一个子类,这会导致类的个数的增加,设计更加抽象。
  4.3 适用场景
    4.3.1 在某些类的算法中,用了相同的方法,造成代码的重复。
    4.3.2 控制子类扩展,子类必须遵守算法规则。
5. 抽象工厂模式与工厂方法模式的区别
   抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。

posted on 2016-02-26 10:05  robertsun  阅读(115)  评论(0编辑  收藏  举报

导航