模板方法模式

模板方法模式

  模板方法模式是一种基于继承的代码复用技术.定义方法操作的骨架,把一些具体实现延伸到子类中去,使用得具体实现不会影响到骨架的行为步骤。

  模板方法模式是最简单的设计模式,直接上代码。

  参考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 }

 

posted on 2015-02-10 11:15  306573704  阅读(185)  评论(0编辑  收藏  举报

导航