重新认识策略模式--简单分析

原创 2016年05月30日 15:40:55

 一、说明

    定义了一系列的算法,并把每个算法封装起来,使他们可以相互替换。这种模式使算法可独立于使用它的客户而变化。它的中心不是如何实现算法,而是如何组织、调用这些算法,让程序结构更灵活,具有更好的维护性和扩展性。

二、类图:


三、代码实现:

/**
 * 策略,定义算法接口*/
public interface Strategy{
    //某个算法接口,可以传入参数,可以有返回值
    public void algorithmInterface();
}
public class ConcreteStrategyA implements Strategy{
    public void algorithmInterface(){
        //具体实现
    }
}
public class ConcreteStrategyB implements Strategy{
    public void algorithmInterface(){
        //具体实现
    }
}
public class ConcreteStrategyCS implements Strategy{
    public void algorithmInterface(){
        //具体实现
    }
}
/**
 * 上下文,持有一个具体的策略对象*/
public class Context{
    //具体的策略对象
    private Strategy strategy;
    //构造函数,传入具体的策略对象
    public Context(Strategy strategy){
        this.strategy=strategy;
    }
    
    public void contextInterface(){
        strategy.algorithmInterface();
    }
}

四、策略模式逻辑
1.客户端选择并创建具体的策略对象。
2.客户端创建上下文
3.客户端使用上下文的方法来执行功能,在调用的时候,从客户端传入算法需要的参数。
4.上下文接到客户的调用请求,会把这个请求转发给它持有的Strategy.

五、扩展

1.通过以上逻辑,可以看出,上下文是具体策略的实现对象。策略实现对象也可以从上下文获取所需要的数据,这样上下文和策略的实现对象之间的耦合度就会很高。在这种情况下需要注意的是上下文数据的浪费,因为所有的策略对象实现都用同一个策略接口,传入相同的上下文。
2.
策略实现扩展的方式有两种,即:扩展上下文,扩展封装实际的算法。

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

重新认识策略模式---利用策略实现容错恢复机制

一、说明:       容错恢复机制是应用程序开发中常见的功能,在程序运行的时候,正常情况下应该按照某种方式来做,按照某种方式来做发生错误的话,系统并不会崩溃。而是由容忍出错的能力,并且还能在出错后...

重新认识装饰模式——结合技术简单分析

最近小编一直在整理设计模式,和大家分享一些我最近的一些收获吧!今天先来整理装饰模式!    一、说明:     装饰模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案 ...

简单工厂和策略模式精华

  • 2012年11月18日 17:22
  • 0B
  • 下载

策略模式的简单例子

  • 2012年04月25日 21:13
  • 11KB
  • 下载

iOS策略模式的简单应用

在iOS开发中,使用官方框架,官方sdk中,可以接触到不少设计模式,可能平时没有注意,实际上已经用到了不少设计模式 下面举一个例子:         策略模式:至于什么是策略模式,请自己百...

Android策略模式简单Demo

  • 2016年02月20日 21:25
  • 1.22MB
  • 下载

Java经典编程300例之实例064 策略模式的简单应用

实例说明 在使用图像处理软件处理图片后,需要选择一种格式进行保存,然而各种格式在底层实现的算法并不相同,这刚好适合策略模式。本实例将演示如何使用策略模式与简单工厂模式组合进行实例开发。   实现...

策略模式与状态工厂,简单工厂的恩怨

前言 为什么题目叫做他们的恩怨呢?因为策略模式与状态模式很相似,他们互相指责对他是冒牌货,简单工厂和策略模式没有上一个模式仿造的厉害,让我一起看看谁才是真的!他们之间的区别是什么? (如有异同请指出...
  • dtttyc
  • dtttyc
  • 2017年02月14日 21:19
  • 187

简单工厂与策略模式

简单工厂模式、策略模式、简单工厂和策略的比较与结合、

java策略模式简单用例

运用java策略模式一个小程序 /** * */ package Strategy; import java.util.Arrays; /** * @author HuangRong ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:重新认识策略模式--简单分析
举报原因:
原因补充:

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