设计模式--行为型-Strategy(策略)

 

 

 

计模式--行为型-Strategy(策略)

 

 

 

1. 意图

 

    定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

 

 

 

2. 结构图

 

 

 

 

 

 

3. 简述

 

    这是个极其常见的模式,就是利用了面向对象语言的多态性。当代码中出现大量的条件语句时,比如

switch(_breakingStrategy)

{

         case SimpleStrategy:

                   ComposeWithSimpleCompositor();

         break;

         caseTexStrategy:

                   ComposeWithTexCompositor();

         break;

        

}

    这个类写了很多不同的处理方法,新增方法,需要重新定义该类。这时就可以用Strategy模式消除case。并且提高可维护性。

       Strategy模式的一个重要的应用是在MVC模式。MVC中的ViewController就是用的Strategy模式。一个View可以对应多种Controller。每个Controller实现一种响应方式,View就相当于Strategy模式中的Context

 

 

4. 实例代码

 
class Context
{
	Strategy* _strategy;

public:
	Context(Strategy*);

	void Process()
	{
		…
		_strategy-> Algorithm();
		…
}
};

class Strategy
{
	Strategy();

public:
	virtual void Algorithm();
};

class ConcteteStrategyA : public Strategy
{
public:
	void Algorithm();
};

class ConcteteStrategyB : public Strategy
{
public:
	void Algorithm();
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值