设计模式----Template Method(模板方法)
2010-02-06 00:07
417 查看
作用:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
UML结构图:
抽象基类:
1)AbstractClass:抽象基类,定义算法的轮廓
解析:
TemplateMethod 的关键在于在基类中定义了一个算法的轮廓,但是算法每一步具体的实现留给了派生类.但是这样也会造成设计的灵活性不高的缺点,因为轮廓已经定下来了要想改变就比较难了,这也是为什么优先采用聚合而不是继承的原因.
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
UML结构图:
抽象基类:
1)AbstractClass:抽象基类,定义算法的轮廓
解析:
TemplateMethod 的关键在于在基类中定义了一个算法的轮廓,但是算法每一步具体的实现留给了派生类.但是这样也会造成设计的灵活性不高的缺点,因为轮廓已经定下来了要想改变就比较难了,这也是为什么优先采用聚合而不是继承的原因.
#include <iostream> using namespace std; class AbstractClass { public: AbstractClass(){} virtual ~AbstractClass(){} // 这个函数中定义了算法的轮廓 void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); } protected: // 纯虚函数,由派生类实现之 virtual void PrimitiveOperation1() = 0; virtual void PrimitiveOperation2() = 0; }; // 继承自AbstractClass,实现算法 class ConcreteClass : public AbstractClass { public: ConcreteClass(){} virtual ~ConcreteClass(){} protected: virtual void PrimitiveOperation1() { cout << "PrimitiveOperation1 by ConcreteClassn/n"; } virtual void PrimitiveOperation2() { cout << "PrimitiveOperation2 by ConcreteClassn/n"; } }; void main() { AbstractClass* pConcreteClass = new ConcreteClass; pConcreteClass->TemplateMethod(); delete pConcreteClass; }
相关文章推荐
- 设计模式拾荒之模板方法模式( Template Method Pattern ): 与工厂方法模式之间的情侣关系
- java模板方法设计模式(Template Method)
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计方式之 模板方法(Template Method)模式
- Java设计模式透析之 —— 模板方法(Template Method)
- 设计模式之模板方法模式(Template Method)摘录
- Java设计模式七:模板方法(Template Method)
- 设计模式-模板方法模式(Template Method Pattern)
- 模板方法模式(Template Method) - 最易懂的设计模式解析
- [设计模式]模板方法模式(Template Method)---抽象类的常见应用
- 设计模式学习笔记(三):模板方法模式【Template Method】(二) 问题解决
- 设计模式学习笔记——Template Method模板方法模式
- Java设计模式透析之 —— 模板方法(Template Method)
- C#设计模式——模板方法(Template Method)
- 设计模式――模板方法模式(Template Method Pattern)
- JUnit中的设计模式:模板方法模式 Template Method
- JAVA设计模式(14) —<行为型>模板方法模式(Template Method)
- 设计模式13:Template Method 模板方法模式(行为型模式)
- Java设计模式透析之 —— 模板方法(Template Method)
- 【设计模式基础】行为模式 - 6 - 模板方法(Template Method)