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

设计模式-策略模式

时间:2015-06-06 13:15:48      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

最近在学习设计模式,参考《大话设计模式》这一经典书籍,为了加深自己理解,在这比划比划!

1.策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

描述:1)定义一个算法的抽象基类,包含一个公共方法(C++中的纯虚函数);

     2)定义基类的子类,每个子类都用不同算法去实现;

     3)定义一个辅助类,类内部包含一个成员变量为抽象基类的指针(C++中抽象基类不能实现产生对象),以及一个方法,方法的内部是调用基类指针指向对象的公共算法,由        多态性可知,这时候会动态绑定,调用不同的算法。

测试代码如下:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 class Base{
 5 public:
 6     virtual void Display() = 0;
 7 };
 8 class A : public Base{
 9 public:
10     void Display(){
11         cout<<"A algorithm"<<endl;
12     }
13 };
14 class B : public Base{
15 public:
16     void Display(){
17         cout<<"B algorithm"<<endl;
18     }
19 };
20 class C : public Base{
21 public:
22     void Display(){
23         cout<<"C algorithm"<<endl;
24     }
25 };
26 class context{
27 private:
28     Base* pBase;
29 public:
30     context (Base* pB){
31         pBase = pB;
32     }
33     void Display(){
34         pBase->Display();
35     }
36 };
37 int main(){
38     context c1((Base*)new A), c2((Base*)new B), c3((Base*)new C);
39     c1.Display();
40     c2.Display();
41     c3.Display();
42     return 0;
43 }

运行结果为:

A algorithm

B algorithm

C algorithm

设计模式-策略模式

标签:

原文地址:http://www.cnblogs.com/xiaomin-is-fighting/p/4556355.html

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