Template method和Strategy模式经常在框架设计中被使用,并且二者很相似,都是父类定义功能接口,将具体的实现留个子类,有时二者可以相互替换。
Template method主要是父类将一个功能的实现分成几个小的步骤,并且在模版方法中规定了这些步骤的执行顺序,同时定义了这些子步骤的protected类型的方法留给子类实现,声明为protected主要是以防止用户不恰当的使用这些方法而产生异常。实现者不需要考虑这些子步骤地执行顺序,只需要实现具体的功能就行了。其实每一个子类去具体的实现这些子步骤,也有策略的味道,只不过Template method主要是在父类封装了子步骤地顺序,从而简化用户的负担以及减少重复的代码的目的。
Strategy模式主要是父类(更常用的是接口)定义一个具体的功能,不同的子类使用不同的策略去具体的实现。其实针对接口编程,一方面达到依赖于接口而不是具体实现的目的,另一方面也是策略模式的一个实现吧,接口规定了功能,不同的实现者提供了不同的策略。常用的Dao模式提供了隔离数据访问与业务层的同时,也提供了可替换的策略,来方便在不同的数据库间移植,或者使用不同的技术来实现。
Template method适用域可能更小一点,灵活性也差一点。如果子类也可以订制这些子步骤的顺序,那就不适合使用Template。使用策略模式,则没有那么多的限制,甚至常常没有子步骤。不过实现者需要知道整个算法的流程,同时也可能暴露过多的行为,从而可能造成使用者误用的可能。
谈到Template method,我倒想到了Builder模式,虽然二者一个是行为模式,一个是创建型模式,但是二者还是有不少相似之处的。Builder模式是隐藏创建的过程,使用者只需要使用build方法就能够获得整个要创建的东西,而不需要考虑具体的创建步骤,Builder模式其实也算(或者可以)用模版方法来实现,只不过这个模版方法是创建对象的而已。
分享到:
相关推荐
设计模式C++学习之模板方法模式(Template Method)
Head First 设计模式 (八) 模板方法模式(Template Method pattern) C++实现
Template Method 模式 Visitor 模式 Guarded Suspension 模式 Producer Consumer 模式 Worker Thread 模式 Thread-Per-Message 模式 Future 模式 Read-Write-Lock 模式 Two-phase Termination 模式 ...
template-method-demo 模板方法示例
Template Method.rarTemplate Method.rarTemplate Method.rarTemplate Method.rar模板设计模式
工厂方法模式(Factory Method Pattern) 观察者模式(Observer Pattern) 建造者模式(Builder Pattern) 解释器模式(Interpreter Pattern) 命令模式(Command Pattern) 模板方法模式(Template Method Pattern) 桥接模式...
在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...
模板方法模式[TEMPLATE METHOD PATTERN] 建造者模式[BUILDER PATTERN] 策略模式 代理模式 单例模式 多例模式 工厂方法模式 抽象工厂模式 门面模式 适配器模式 模板方法模式 建造者模式 桥梁模式 命令模式 装饰模式 ...
9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合...
Builder ( 建造者模式 ) Prototype ( 原型模式 ) Adapter ( 适配器模式 ) Bridge ( 桥接模式 ) Composite ( 组合模式 ) Decorator ( 装饰模式 ) Facade ( 外观模式 ) Flyweight ( 享元模式 ) Proxy ( 代理...
在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...
C++设计模式课件3_Template Method_模板方法.pdf
在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...
在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下...模板方法模式(Template Method) 访问者模式(Visitor)
- 模板方法模式(Template Method) - 策略模式(Strategy) - 责任链模式(Chain of Responsibility) - 中介者模式(Mediator) - 访问者模式(Visitor) - 命令模式(Command) - 解释器模式(Interpreter) - 迭代器...
C++设计模式代码资源3_Template Method_模板方法.zip
TemplateMethod Pattern.unitypackage是一个模板方法模式的小栗子。
在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...
在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...