您的位置:首页 > 其它

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

2014-04-13 10:24 253 查看
 
 
 
设计模式--行为型-Strategy(策略)
 
 
 

1. 意图

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

2.
结构图

 

 



[align=left] [/align]

 
 
 

3. 简述

 
    这是个极其常见的模式,就是利用了面向对象语言的多态性。当代码中出现大量的条件语句时,比如
switch(_breakingStrategy)
{
        
case SimpleStrategy:
                  
ComposeWithSimpleCompositor();
        
break;
         caseTexStrategy:
                  
ComposeWithTexCompositor();
        
break;
        

}
    这个类写了很多不同的处理方法,新增方法,需要重新定义该类。这时就可以用Strategy模式消除case。并且提高可维护性。
       Strategy模式的一个重要的应用是在MVC模式。MVC中的View和Controller就是用的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();
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: