策略模式简单实现

策略模式
https://blog.csdn.net/xie__jin__cheng/article/details/87871576(状态,职责链,策略对比分析)
策略模式:就是有一个策略类,他有一个算法函数(AlgorithmInterface)可多态。
他可供context选择(context调用他的算法函数(AlgorithmInterface)),
代码(c++)
#include
using namespace std;
#include

// 抽象层
class Strategy
{
public:
virtual void AlgorithmInterface()=0;
};
class Context
{
public:
Strategy* mStrategy;
Context(Strategy* s)
{
mStrategy = s;
}
void ContextInterfase(){
mStrategy->AlgorithmInterface();
}
};
//具体层
class ConcreteStrategyA: public Strategy
{
public:
virtual void AlgorithmInterface()
{
cout<<“执行A策略的算法”<<"\n";
}
};
class ConcreteStrategyB: public Strategy
{
public:
virtual void AlgorithmInterface()
{
cout<<“执行B策略的算法”<<"\n";
}
};
class ConcreteStrategyC: public Strategy
{
public:
virtual void AlgorithmInterface()
{
cout<<“执行C策略的算法”<<"\n";
}
};

//客户端调用
int main()
{
cout<<“策略模式演示\n”;

//等待被选择的策略
ConcreteStrategyA* p_csa = new ConcreteStrategyA();
ConcreteStrategyB* p_csb = new ConcreteStrategyB();
ConcreteStrategyC* p_csc = new ConcreteStrategyC();

//选择策略(注意:选择策略的方式有很多种,这里只是其中之一)
//该模式的价值不在于使用什么方式选择策略,关键在于有多态的策略共选择
Context* c1 = new Context(p_csa);
c1->ContextInterfase();
Context* c2 = new Context(p_csb);
c2->ContextInterfase();
Context* c3 = new Context(p_csc);
c3->ContextInterfase();

//以步骤的方式说说该模式
//1.将策略(Strategy)里的算法函数(AlgorithmInterface)多态
//2.引入策略类(Context(Strategy* s))(这是引入策略的方法之一,使用什么方式引入都可以算是策略模式)
//3.执行算法(mStrategy->AlgorithmInterface())

//看代码不用考虑以下内容
int cin_a;
cin>>cin_a;
return 0;

}

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/87856293