// Strategy.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class Strategy;
class Context
{
public:
Context(Strategy *pStrategy=NULL):m_pStrategy(pStrategy)
{
}
~Context()
{
}
void ContextInterface();
void setStrategy(Strategy* s)
{
m_pStrategy=s;
}
private:
Strategy* m_pStrategy;
};
class Strategy
{
public:
virtual ~Strategy(){}
virtual void AlgorithmInterface() = 0;
};
class ConcreateStrategyA
: public Strategy
{
public:
virtual ~ConcreateStrategyA(){}
virtual void AlgorithmInterface()
{
cout << "AlgorithmInterface Implemented by ConcreateStrategyA/n";
}
};
class ConcreateStrategyB
: public Strategy
{
public:
virtual ~ConcreateStrategyB(){}
virtual void AlgorithmInterface()
{
cout << "AlgorithmInterface Implemented by ConcreateStrategyB/n";
}
};
void Context::ContextInterface()
{
if (NULL != m_pStrategy)
{
m_pStrategy->AlgorithmInterface();
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Strategy* pStrategyA = new ConcreateStrategyA();
Context* pContext = new Context(pStrategyA);
pContext->ContextInterface();
cout<<"========================"<<endl;
Strategy* pStrategyB = new ConcreateStrategyB();
pContext->setStrategy(pStrategyB);
pContext->ContextInterface();
delete pStrategyA;
delete pStrategyB;
delete pContext;
return 0;
}
原文链接: https://www.cnblogs.com/ustc11wj/archive/2011/06/02/2610898.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/26610
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!