设计模式--策略模式

博客围绕C++的策略模式展开,以锦囊和策略作比喻。一个策略置于一个锦囊,使用时从锦囊取出策略。锦囊仅负责装载和调用,无逻辑,策略有更大自主权和更多逻辑,且一个锦囊只能装一个策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解释说明:

main(),赵云  

CContext,锦囊

 IStrategy,策略接口  

CBackDoor,策略之一

 CGivenGreenLight,策略之二

 CBlockEnemy,策略之三

 说明:一个策略放到一个锦囊里。当用的时候,找到这个锦囊,从锦囊里拿出策略来使用。  注意:锦囊只是简单的装载和调用策略,锦囊里没有逻辑。策略会有更大的自主权,运行更多的逻辑。

一个策略放到一个锦囊里。当用的时候,找到这个锦囊,从锦囊里拿出策略来使用。 
注意:锦囊只是简单的装载和调用策略,锦囊里没有逻辑。策略会有更大的自主权,运行更多的逻辑。 

一个锦囊只能装一个策略

#pragma once
#include <iostream>

using namespace std;
//策略接口
class IStrategy
{
public:
	IStrategy(){}
	virtual ~IStrategy(){}

	virtual void Operator() = 0;
};

//实际策略BackDoor
class BackDoor :public IStrategy
{
public:
	BackDoor(){}
	~BackDoor(){}

	void Operator();
};
void BackDoor::Operator()
{
	cout << "找乔国老帮忙,让吴国太给孙权施压" << endl;
}

//实际策略GivenGreenLigh
class GivenGreenLigh : public IStrategy
{
public:
	GivenGreenLigh(){}
	~GivenGreenLigh(){}

	void Operator();
};
void GivenGreenLigh::Operator()
{
	cout << "求吴国太给绿灯,放行" << endl;
}

//使用锦囊包装策略
class CContext
{
public:
	CContext(IStrategy* mistrategy)
	{

		this->m_Istrategy = mistrategy;
	}
	~CContext()
	{
		delete this->m_Istrategy;
	}
	void Oper()
	{
		this->m_Istrategy->Operator();
	}
private:
	IStrategy* m_Istrategy;

};

int main()
{
	CContext* p_context;//定义一个锦囊

	p_context = new CContext(new BackDoor());
	p_context->Oper();
	p_context = new CContext(new GivenGreenLigh());
	p_context->Oper();



	return 0;
}

参考链接:https://www.cnblogs.com/wanggary/category/294620.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值