码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-策略模式

时间:2014-11-30 22:48:26      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   sp   

bubuko.com,布布扣

代码实现

bubuko.com,布布扣
 1 class Strategy
 2 {
 3 public:
 4     Strategy() {}
 5 
 6     virtual void AlgrithmInterface() = 0;    //算法族接口
 7 
 8     virtual ~Strategy()
 9     {
10         cout << "Strategy Destruction called." << endl;
11     }
12 };
13 
14 class ConcrateStrategyA : public Strategy
15 {
16 public:
17     ConcrateStrategyA() {}
18 
19     virtual void AlgrithmInterface()
20     {
21         cout << "ConcrateStrategyA AlgrithmInterface Called." << endl;
22     }
23 
24     virtual ~ConcrateStrategyA()
25     {
26         cout << "ConcrateStrategyA Destruction called" << endl;
27     }
28 };
29 
30 class ConcrateStrategyB : public Strategy
31 {
32 public:
33     ConcrateStrategyB() {}
34 
35     virtual void AlgrithmInterface()
36     {
37         cout << "ConcrateStrategyB AlgrithmInterface Called." << endl;
38     }
39 
40     virtual ~ConcrateStrategyB()
41     {
42         cout << "ConcrateStrategyB Destruction Called" << endl;
43     }
44 };
45 
46 
47 class Context
48 {
49 public:
50     Context(Strategy *pStrategy)
51     {
52         mStrategy = pStrategy;
53     }
54 
55     void DoAction()
56     {
57         if (mStrategy)
58         {
59             mStrategy->AlgrithmInterface();
60         }
61     }
62 
63     void SetStrategy(Strategy *pStrategy)
64     {
65         mStrategy = pStrategy;
66     }
67     ~Context()
68     {
69         if (mStrategy)
70         {
71             delete mStrategy;
72             mStrategy = NULL;
73         }
74     }
75 private:
76     Strategy *mStrategy;
77 };
78 
79 int _tmain(int argc, _TCHAR* argv[])
80 {
81     ConcrateStrategyA *strategyA = new ConcrateStrategyA;
82     ConcrateStrategyB *strategyB = new ConcrateStrategyB;
83     Context context(strategyA);
84     context.DoAction();
85 
86     context.SetStrategy(strategyB);
87     context.DoAction();
88 
89     delete strategyA;
90     strategyA = NULL;
91     delete strategyB;
92     strategyB = NULL;
93     getchar();
94     return 0;
95 }
View Code

 

Head First 设计模式中鸭子实例

bubuko.com,布布扣

设计模式-策略模式

标签:des   style   blog   http   io   ar   color   os   sp   

原文地址:http://www.cnblogs.com/jck34/p/4133705.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!