您的位置:首页 > 编程语言 > C语言/C++

设计模式二 策略模式

2014-06-27 22:43 281 查看
策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。(参考大话设计模式)



#include <iostream>
using namespace std;

class Strategy
{
public:
Strategy(){cout<<"Base Strategy\n";}
virtual void AlgrithmInterface() = 0;
};

class ConcreteStrategyA :public Strategy
{
public:
ConcreteStrategyA(){cout<<"StrategyA\n";}
void AlgrithmInterface()
{
cout<<"Implement of AlgrithmInterfaceA\n";
}
};

class ConcreteStrategyB :public Strategy
{
public:
ConcreteStrategyB(){cout<<"StrategyB\n";}
void AlgrithmInterface()
{
cout<<"Implement of AlgrithmInterfaceB\n";
}
};

class Context
{
private:
Strategy *_strategy;
public:
Context(Strategy *strategy)
{
_strategy = strategy;
}

void ContextInterface()
{
_strategy->AlgrithmInterface();
}
~Context()
{
if(!_strategy) delete _strategy;
}

};

int main()
{
Strategy * st;
st = new ConcreteStrategyA();
Context *ct;
ct = new Context(st);
ct->ContextInterface();
if(!ct) delete ct;
if(!st) delete st;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息