设计模式(4)-行为型-模版模式(Template Method)
2016-07-15 02:10
260 查看
意图:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
个人理解:
模版模式与桥接模式的不同在于使用目的:桥接模式是解决类的多维度变化的。模版模式是分离行为的可变和不变部分去满足顶级逻辑的不同执行。
子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。顶级逻辑是摸板模式的最终目的。
适用性:
一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
控制子类扩展,这样就只允许在这些点进行扩展。
简单代码,便于理解:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
个人理解:
模版模式与桥接模式的不同在于使用目的:桥接模式是解决类的多维度变化的。模版模式是分离行为的可变和不变部分去满足顶级逻辑的不同执行。
子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。顶级逻辑是摸板模式的最终目的。
适用性:
一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
控制子类扩展,这样就只允许在这些点进行扩展。
简单代码,便于理解:
//抽象模版 public abstract class AbstractTemplate { //顶级逻辑骨架 //逻辑的组成步骤在相应的抽象操作中,推迟到子类实现 //顶级逻辑是模版方法的目的 public void templateMethod(){ abstractMethod(); hookMethod(); concreteMethod(); } /** * 基本方法的声明(由子类实现) */ protected abstract void abstractMethod(); /** * 基本方法(已经实现) */ private final void concreteMethod(){ //业务相关的代码 } } //具体模版 public class ConcreteTemplate extends AbstractTemplate{ //基本方法的实现 @Override public void abstractMethod() { //业务相关的代码 } } public static void main(String[] args){ ConcreteTemplate c=new ConcreteTemplate(); //执行顶级逻辑才是模版方法的目的。 c.templateMethod(); }
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 详解组合模式的结构及其在Ruby设计模式编程中的运用
- C# 设计模式系列教程-建造者模式
- C#编程中使用设计模式中的原型模式的实例讲解
- 使用设计模式中的工厂方法模式进行C#编程的示例讲解
- 实例解析C#设计模式编程中简单工厂模式的使用
- 详解C#设计模式编程中生成器模式的使用