Strategy策略模式

原创 2013年12月05日 19:10:42
#include <iostream>
using namespace std;


class IStrategy
{
public:
	IStrategy(void){}
	virtual ~IStrategy(void){}
	virtual void Operate(void) = 0;
};

class CContext
{
public:
	CContext(IStrategy *pStrategy)
	{
		this->m_pStrategy = pStrategy;
	}
	~CContext(void)
	{
		delete this->m_pStrategy;
	}

	void Operate(void)
	{
		this->m_pStrategy->Operate();
	}

private:
	IStrategy *m_pStrategy;
};

class CBackDoor : public IStrategy
{
public:

	void Operate(void)
	{
		cout << "调用第一个锦囊" << endl;
	}
};

class CGivenGreenLight :public IStrategy
{
public:
	void Operate(void)
	{
		cout << "调用第二个锦囊" << endl;
	}
};

class CBlockEnemy :public IStrategy
{
public:
	void Operate(void)
	{
		cout << "调用第三个锦囊" << endl;
	}
};
int main()
{
	CContext *pContext;
	
	pContext = new CContext(new CBackDoor());
	pContext->Operate();
	delete pContext;

	pContext = new CContext(new CGivenGreenLight());
	pContext->Operate();
	delete pContext;

	pContext = new CContext(new CBlockEnemy());
	pContext->Operate();
	delete pContext;


	IStrategy* ist  = new CBackDoor();//为什么不直接用这种?
	ist->Operate();
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

浅谈JAVA设计模式之——策略模式(Strategy)

一、概述 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 二、适用性 1.许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为...
  • l1028386804
  • l1028386804
  • 2015年05月09日 14:02
  • 1889

设计模式--深度解析策略模式(Strategy Pattern)

前些天网购一本Head First Design Patterns,学习了一下,觉得写的挺好,而且挺有趣的,推荐大家都去买一本,真心不错。在这里我先讲一下,这两天学的,两个常见的设计模式,分别Stra...
  • qq_29282475
  • qq_29282475
  • 2015年12月04日 14:17
  • 3555

我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)

每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通...
  • LCL_data
  • LCL_data
  • 2013年08月24日 10:59
  • 12921

C++设计模式<四>:策略模式(Strategy)

1.动机在软件构件过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。2.模式定义定义一系列算法,把它们...
  • MonroeD
  • MonroeD
  • 2016年04月08日 01:16
  • 390

设计模式:策略模式(Python)

策略模式(Strategy Pattern): 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 原则: 针对接口(...
  • ericzhong83
  • ericzhong83
  • 2012年05月17日 23:53
  • 4900

策略模式(Strategy 模式)

一、概述策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。二、结构  策略模...
  • l_lhc
  • l_lhc
  • 2016年02月18日 12:23
  • 402

Java设计模式——策略模式(Strategy Pattern)

Java设计模式——策略模式(Strategy Pattern) 场景一 描述:刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,嘿,还别说,真是解决了大问题,...
  • u012401711
  • u012401711
  • 2016年09月07日 21:16
  • 1110

策略模式(Strategy Pattern)就这么简单

0x00 举个生活中的例子某个大人网站是会员制的,金牌会员购买精神食粮打7折,银牌会员打8折,铜牌会员打9折,铁牌会员不打折。也就是说不同的用户在购买精神食粮的时候结算的价格是不一样的,即使你们买相同...
  • fiendvip
  • fiendvip
  • 2016年04月12日 21:18
  • 4238

Strategy模式和Template Method模式的异同浅析

一、Strategy模式 1. 特点说明: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。适用场景: 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为...
  • aheroofeast
  • aheroofeast
  • 2011年08月19日 20:16
  • 3097

策略模式及C++实现

策略模式(Strategy):它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。(原文:The Strategy Pattern d...
  • mafuli007
  • mafuli007
  • 2012年02月07日 15:41
  • 5824
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Strategy策略模式
举报原因:
原因补充:

(最多只允许输入30个字)