`
wuxing429
  • 浏览: 16097 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

设计模式之策略模式(四)

 
阅读更多

策略模式定义

在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。
策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换

策略模式的组成

  1、抽象策略角色(Strategy): 策略类,通常由一个接口或者抽象类实现。
  2、具体策略角色(concreteStrategyA):包装了相关的算法和行为。
  3、环境角色(Context):持有一个策略类的引用,最终给客户端调用。

 

策略模式类图

 

 

策略模式优缺点

 

  优点:
  1、 简化了单元测试,因为每个算法都有自己的类,可以通过自己的接口单独测试。
  2、 避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。
      3、 遵守大部分GRASP原则和常用设计原则,高内聚、低偶合。

 

    缺点:
  1、 因为每个具体策略类都会产生一个新类,所以会增加系统需要维护的类的数量。

      2、 在基本的策略模式中,选择所用具体实现的职责由客户端对象承担,并转给策略模式的Context对象。(这本身没有解除客户端需要选择判断的压力,而策略模式与简单工厂模式结合后,选择具体实现的职责也可以由Context来承担,这就最大化的减轻了客户端的压力。)

 

 

策略模式的适用性

    当存在以下情况时使用Strategy模式
    1)许多相关的类仅仅是行为有异。 “策略”提供了一种用多个行为中的一个行为来配置一个类的方法。即一个系统需要动态地在几种算法中选择一种。
    2) 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间 /时间权衡的算法。当这些变体实现为一个算法的类层次时 ,可以使用策略模式。
    3)算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。
    4)一个类定义了多种行为 , 并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。

  • 大小: 4.9 KB
分享到:
评论

相关推荐

    设计模式之策略模式 鸭子问题

    设计模式之策略模式 鸭子问题 策略模式是一种经典的设计模式,通过鸭子问题,可以让学习者更好地了解设计模式的概念和实现。策略模式的主要思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。...

    设计模式之策略模式

    设计模式中的策略模式。根据《设计模式》一书编写

    设计模式之策略模式,商场收银,封装算法

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景来执行不同算法的情况。策略模式就是为了解决这类问题而提出的,它将每种算法封装到具有共同接口...

    55-Java设计模式之策略模式与状态模式1

    Java 设计模式之策略模式与状态模式 策略模式是 Java 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,...

    设计模式之策略模式源码

    在给定的"设计模式之策略模式源码"工程中,我们可以看到通过一个简单的收银系统来展示策略模式的应用。收银系统是一个常见的业务场景,其中可能涉及多种结算策略,如折扣、满减、会员优惠等。通过策略模式,我们可以...

    设计模式之策略模式Java实现和类设计图

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及定义一系列算法,将每个算法封装到具有共同接口的独立类中,使得它们可以相互替换。这样做的主要好处是算法的变化不会影响...

    设计模式-策略者

    在《设计模式-策略者》这篇文章中,作者深入浅出地介绍了策略模式的基本概念、结构和实现方式。文章可能涵盖了以下几个关键知识点: 1. **模式定义**:策略模式允许在运行时选择不同的算法或策略,提供了一种用面向...

    设计模式之策略模式(附demo)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件工程中,我们经常遇到需要根据不同的条件或时间点执行不同策略的情况。策略模式允许我们将算法族封装到各自独立的类中,使得它们可以互换使用,...

    python 设计模式之策略模式

    python 设计模式之策略模式

    java设计模式之策略模式与模板模式

    本篇文章将深入探讨两种重要的设计模式:策略模式和模板模式。通过理解这两种模式,开发者可以更好地组织代码,提高代码的灵活性和可扩展性。 ### 策略模式 策略模式是一种行为设计模式,它使你能在运行时改变对象...

    走进设计模式之 策略模式(Strategy)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件设计中,有时我们需要根据不同的场景或条件选择不同的算法或行为。策略模式允许我们将这些算法封装成独立的类,每个类代表一种策略,然后在运行...

    设计模式之蝉

    《设计模式之蝉》这本书可能是对设计模式的一种形象化描述,或是以蝉为比喻来讲解设计模式的概念。蝉在地下蛰伏多年,最终破土而出,仅生活在地面上的几周时间。这一生命周期与设计模式的持久价值有异曲同工之妙,即...

    设计模式之策略模式讲解ppt

    设计模式之策略模式讲解ppt,完整代码详见:https://blog.csdn.net/sinat_35866463/article/details/89094887

    设计模式之策略模式(Strategy Pattern)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或时间点执行不同算法的情况。策略模式提供了一种灵活的方式来处理这种情况,通过将每种算法封装为一个...

    Java 经典设计模式讲解以及项目实战

    3 策略模式 4 模板方法模式 5 工厂方法模式 6 抽象工厂模式 7 建造者模式 8 代理模式 9 装饰模式 10 原型模式 11 委派模式 12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 门面+模版方法+责任链+...

    Java 设计模式 策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 首先,策略模式的...

    设计模式--策略模式java例子

    ### 四、策略模式的优点 1. **可扩展性**:添加新的算法只需要实现策略接口,而不会影响现有代码。 2. **灵活性**:在运行时可以根据需求选择合适的策略,提高程序的动态性和灵活性。 3. **降低耦合**:策略对象与...

Global site tag (gtag.js) - Google Analytics