标签:
模板方法模式
模板方法模式是一种基于继承的代码复用技术.定义方法操作的骨架,把一些具体实现延伸到子类中去,使用得具体实现不会影响到骨架的行为步骤。
模板方法模式是最简单的设计模式,直接上代码。
参考http://www.cnblogs.com/jiese/p/3180477.html
1 #include "stdafx.h" 2 #include<iostream> 3 #include <vector> 4 #include <string> 5 using namespace std; 6 7 8 //抽象模板,并定义了一个模板方法。 9 class AbstractClass 10 { 11 protected: 12 AbstractClass(){} 13 public: 14 //具体的模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们都推迟到子类中实现 15 void TemplateMethod() 16 { 17 this->PrimitiveOperation1(); 18 this->PrimitiveOperation2(); 19 } 20 //一些抽象行为,放到子类中去实现 21 virtual void PrimitiveOperation1()=0; 22 virtual void PrimitiveOperation2()=0; 23 24 }; 25 26 //实现基类所定义的抽象方法 27 class ConcreteClassA : public AbstractClass 28 { 29 public: 30 //实现基类定义的抽象行为 31 virtual void PrimitiveOperation1() 32 { 33 cout<<"ConcreteClassA::PrimitiveOperation1"<<endl; 34 } 35 virtual void PrimitiveOperation2() 36 { 37 cout<<"ConcreteClassA::PrimitiveOperation2"<<endl; 38 } 39 private: 40 }; 41 42 //实现基类所定义的抽象方法 43 class ConcreteClassB : public AbstractClass 44 { 45 public: 46 //实现基类定义的抽象行为 47 virtual void PrimitiveOperation1() 48 { 49 cout<<"ConcreteClassB::PrimitiveOperation1"<<endl; 50 } 51 virtual void PrimitiveOperation2() 52 { 53 cout<<"ConcreteClassB::PrimitiveOperation2"<<endl; 54 } 55 }; 56 57 int main() 58 { 59 //ConcreteClassA与ConcreteClassB可相互替换 60 AbstractClass* pAbstract = new ConcreteClassA(); 61 pAbstract->TemplateMethod(); 62 63 pAbstract = new ConcreteClassB(); 64 pAbstract->TemplateMethod(); 65 66 system("pause"); 67 return 0; 68 }
标签:
原文地址:http://www.cnblogs.com/SnailProgramer/p/4283325.html