模板方法模式(Template method)
2013-11-25 11:14
435 查看
意图定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
应用场景uu类图
参与者AbstractClass
定义抽象的原语(PrimitiveOperation),具体的子类将重定义它们以实现一个算法的各步骤
实现一个模板方法,定义一个算法骨架。该模板方法不仅调用原语操作,也调用定义在AbstractClass或其他对象中的操作。
ConcreteClass
实现原语操作,以完成算法中与特定子类相关的步骤
代码
来自为知笔记(Wiz)
应用场景uu类图
参与者AbstractClass
定义抽象的原语(PrimitiveOperation),具体的子类将重定义它们以实现一个算法的各步骤
实现一个模板方法,定义一个算法骨架。该模板方法不仅调用原语操作,也调用定义在AbstractClass或其他对象中的操作。
ConcreteClass
实现原语操作,以完成算法中与特定子类相关的步骤
代码
#include <iostream> using namespace std; class AbstractClass { public: virtual void PrimitiveOperation1() = 0; virtual void PrimitiveOperation2() = 0; void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); } }; class ConcreteClassA:public AbstractClass { public: void PrimitiveOperation1() { cout<<"具体类A 方法1实现"<<endl; } void PrimitiveOperation2() { cout<<"具体类A 方法2实现"<<endl; } }; class ConcreteClassB:public AbstractClass { public: void PrimitiveOperation1() { cout<<"具体类B 方法1实现"<<endl; } void PrimitiveOperation2() { cout<<"具体类B 方法2实现"<<endl; } }; int main() { AbstractClass *pAb = new ConcreteClassA(); pAb->TemplateMethod(); pAb = new ConcreteClassB(); pAb->TemplateMethod(); }
来自为知笔记(Wiz)
相关文章推荐
- 行为模式: Template Method(模板方法)
- Java设计模式 模板方法(Template Method)
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 【设计模式】行为性模式——模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method)
- Java设计模式之模板方法模式(Template Method)
- (Template Method)模板方法模式的Java实现 推荐
- 模板方法模式(Template Method)
- 模板方法(Template Method)设计模式
- 【java设计模式】之 模板方法(Template Method)模式
- 设计模式之模板方法模式(Template Method)摘录
- C++设计模式:模板方法(Template Method)
- 设计模式介绍:模板方法(Template Method)模式
- 模板方法模式(Template Method)
- 设计模式之七:模板方法模式(Template Method)
- Java开发中的23种设计模式详解----模板方法模式(Template Method)
- 设计模式13:Template Method 模板方法模式(行为型模式)
- Template Method 模板方法模式代码
- 行为设计模式---模板方法模式(Template Method)
- 设计模式(十五)模板方法模式(Template Method)-行为型