策略模式简单实现

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

#include <iostream>
using namespace std;
#include <string>

// 抽象层
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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值