设计模式——模板方法模式
2013-03-16 23:01
155 查看
1、模板方法
2、代码
3、特点:
(1)把通用的不变行为搬到基类中。
(2)定义了一个操作中的算法骨架,将一些步骤延迟到子类中去。子类中可以不改变算法的结构即可重定义该算法的特殊步骤。
2、代码
#include <iostream> using namespace std; class AbstractClass { public: virtual void PrimitiveOperation1() { printf("AbstractClass PrimitiveOperation1\n"); } virtual void PrimitiveOperation2() { printf("AbstractClass PrimitiveOperation2\n"); } void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); } }; class ConcreteClassA:public AbstractClass { public: void PrimitiveOperation1() { printf("ConcreteClassA PrimitiveOperation1\n"); } void PrimitiveOperation2() { printf("ConcreteClassA PrimitiveOperation2\n"); } }; class ConcreteClassB:public AbstractClass { public: void PrimitiveOperation1() { printf("ConcreteClassB PrimitiveOperation1\n"); } void PrimitiveOperation2() { printf("ConcreteClassB PrimitiveOperation2\n"); } }; void main() { AbstractClass* c = new ConcreteClassA; c->TemplateMethod(); AbstractClass* a = new ConcreteClassB; a->TemplateMethod(); return; }
#include<iostream> #include <list> using namespace std; //框架类,定义了测试汽车的步骤 class TestCar { protected: virtual void StartCar() = 0; //每种车启动的方式不同,在子类中去实现。 virtual void RunCar() = 0; virtual void StopCar() = 0; public: void Test() //不管什么车,测试的步骤是不变的,都是这几步,放在基类里面。 { StartCar(); RunCar(); StopCar(); } }; class TestBenz:public TestCar { protected: void StartCar() //子类去具体实现 { cout<<"Start Benz"<<endl; } void RunCar() { cout<<"Run Benz"<<endl; } void StopCar() { cout<<"Stop Benz"<<endl; } }; class TestBMW:public TestCar { protected: void StartCar() { cout<<"Start BMW"<<endl; } void RunCar() { cout<<"Run BMW"<<endl; } void StopCar() { cout<<"Stop BMW"<<endl; } }; #include "Test.h" int main() { TestBMW* test_bwm = new TestBMW; test_bwm->Test(); TestBenz* test_benz = new TestBenz; test_benz->Test(); return 0; }
3、特点:
(1)把通用的不变行为搬到基类中。
(2)定义了一个操作中的算法骨架,将一些步骤延迟到子类中去。子类中可以不改变算法的结构即可重定义该算法的特殊步骤。
相关文章推荐
- 设计模式-模板方法
- 设计模式之模板方法模式(Template Method)
- 设计模式_模板方法模式(Java)
- Java设计模式之模板方法
- 设计模式之模板方法模式 c++实现和详细分析
- C++设计模式:模板方法(Template Method)
- 【GOF23设计模式】_模板方法模式_钩子函数_方法回调_好莱坞原则JAVA249
- 设计模式(5)---->模板方法
- 设计模式读书笔记-----模板方法模式
- C++设计模式之模板方法模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式之模板方法模式
- c++设计模式----模板方法template method
- 设计模式之模板方法模式
- Java设计模式菜鸟系列(十)模板方法模式建模与实现
- Java开发中的23种设计模式详解----模板方法模式(Template Method)
- java设计模式---Template Method模板方法---实际处理交给子类
- java设计模式之模板方法
- 设计模式-模板方法模式
- 设计模式GOF23——模板方法模式