设计模式二 策略模式
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;
}
#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;
}
相关文章推荐
- 设计模式之Strategy(策略)
- 设计模式之策略模式(strategy)--游戏角色使用武器
- [设计模式] 23.Strategy 策略模式
- [★] .NET 偶尔连接的设计策略 -联机状态- 脱机模式- 数据同步
- 设计模式袖珍版 连续转载之 - Strategy(策略)
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- 设计模式之Strategy(策略)
- 设计模式之策略模式探讨初步[引]
- 设计模式随笔系列:鸭子-策略模式(Strategy)[转]
- 设计模式之Strategy(策略)
- Java设计模式学习之一---策略模式
- AspectJ实现设计模式(二)——策略模式
- 设计模式之策略模式探讨初步
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式与泡mm的关系之strategy策略模式及再思考
- 设计模式之Strategy(策略)
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式(20)-策略模式(Strategy)