初看策略模式,做了简单的调试,后续有时间再仔细思考一下,在这里做个笔记。
策略模式:
在Context对象中设置策略属性(构建策略);通过Context对象执行策略。
工厂模式:
策略模式:
在Context对象中设置策略属性(构建策略);通过Context对象执行策略。
工厂模式:
在工厂中构造任务,赋值给接口指针;通过接口指针操作任务方法。
#include <iostream>
using namespace std;
enum STRATEGY{S1, S2, S3};
class StrategyInterface
{
public:
virtual void execute() = 0;
};
class StrategyA: public StrategyInterface
{
public:
virtual void execute()
{
cout << " StrategyA execute method" << endl;
}
};
class StrategyB: public StrategyInterface
{
public:
virtual void execute()
{
cout << " StrategyB execute method" << endl;
}
};
class StrategyC: public StrategyInterface
{
public:
virtual void execute()
{
cout << " StrategyC execute method" << endl;
}
};
class Context
{
private:
StrategyInterface *_strategy;
public:
Context():_strategy(NULL)
{
}
void set_strategy(STRATEGY s)
{
if(_strategy != NULL)
{
delete _strategy;
_strategy = NULL;
}
switch(s)
{
case S1:
_strategy = new StrategyA;
break;
case S2:
_strategy = new StrategyB;
break;
case S3:
_strategy = new StrategyC;
break;
default:
return;
}
}
void execute()
{
_strategy->execute();
}
~Context()
{
if(_strategy != NULL)
{
delete _strategy;
_strategy = NULL;
}
}
};
int main(int argc, char *argv[])
{
Context context;
context.set_strategy(S1);
context.set_strategy(S2);
context.set_strategy(S3);
context.execute();
return 0;
}