#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
class Strategy
{
public:
virtual void AlgorithmInterface() = 0;
};
class Context
{
public:
Context(Strategy *pStrategy=NULL):m_pStrategy(pStrategy) {}
void ContextInterface()
{
if (m_pStrategy)
{
m_pStrategy->AlgorithmInterface();
}
}
void setStrategy(Strategy* s){m_pStrategy=s;}
private:
Strategy* m_pStrategy;
};
class ConcreateStrategyA: public Strategy
{
public:
virtual void AlgorithmInterface()
{
cout << "AlgorithmInterface Implemented by ConcreateStrategyA\n";
}
};
class ConcreateStrategyB: public Strategy
{
public:
virtual void AlgorithmInterface()
{
cout << "AlgorithmInterface Implemented by ConcreateStrategyB\n";
}
};
int main()
{
Strategy* pStrategyA = new ConcreateStrategyA();
Context* pContext = new Context(pStrategyA);
pContext->ContextInterface();
Strategy* pStrategyB = new ConcreateStrategyB();
pContext->setStrategy(pStrategyB);
pContext->ContextInterface();
return 0;
}
对象行为模式——策略模式(Strategy)
最新推荐文章于 2024-11-27 15:39:59 发布