`

策略模式Strategy分离算法,选择实现

阅读更多
迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要用另一个类的某一个方法的话,可以通过第三者转发这个调用。

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

public interface Strategy {
  public void algorithmInterface();
}

public class ConcreteStrategyA implements Strategy {
  public void algorithmInterface() {
 
  }
}

public class ConcreteStrategyB implements Strategy {
  public void algorithmInterface() {
 
  }
}

public class ConcreteStrategyC implements Strategy {
  public void algorithmInterface() {
 
  }
}

public class Context() {
  private Strategy strategy;
 
  public Context(Strategy strategy) {
    this.strategy = strategy;
  }

  public void contextInterface() {
    strategy.algorithmInterface();
  }
}
策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。

扩展:将上下文当作参数传递给策略对象。
分享到:
评论

相关推荐

    【Java设计模式】(2)策略模式Strategy

    总结来说,策略模式是一种强大的设计模式,它提供了一种将算法族封装在独立的可互换的策略类中的方法,使得客户端可以根据需要选择合适的行为。在Java编程中,策略模式广泛应用于需要动态改变对象行为的场景,如游戏...

    桥接模式和策略模式的区别,内含可运行代码和两者详细区别

    1. **目的不同**:桥接模式是为了分离抽象与实现,让它们可以独立变化,而策略模式关注的是算法或行为的选择。 2. **结构差异**:桥接模式包含抽象、实现和桥接角色,实现部分和抽象部分通过桥接角色关联;策略模式...

    行为型——Strategy(策略模式)

    在实际应用中,策略模式常常用于处理多种可能的算法选择,例如排序算法(冒泡排序、快速排序等)、支付方式(信用卡支付、支付宝支付等)或者游戏中的角色移动策略等。 策略模式的优点: 1. **封装变化**:策略模式...

    简单实现策略模式

    2. **具体策略类(Concrete Strategy Classes)**:实现了策略接口,提供具体的算法实现。每个具体策略类代表一种策略,它们之间的区别在于实现策略接口的方法。 3. **上下文(Context)**:上下文使用策略接口来...

    [行为模式] head first 设计模式之策略模式(strategy)

    策略模式通常由三部分组成:上下文(Context)、策略接口(Strategy)和具体策略类(Concrete Strategy)。上下文是使用策略的对象,它定义了与策略交互的接口,而策略接口定义了策略的公共操作。具体策略类实现了...

    策略模式简介和java代码实现

    策略模式(Strategy Pattern)是一种行为设计模式,它允许在运行时选择不同的算法或行为,将算法的使用与算法的实现分离。策略模式的核心是定义一个策略接口或抽象类,然后由一系列具体策略类去实现这个接口或继承这...

    JAVA_Strategy.rar_java 策略模式、工厂模式、桥接模式_severalgdo_strategy

    这样,策略模式就将算法的选取与算法的实现分离开来,降低了耦合度。 2. **工厂模式**:工厂模式是一种创建型设计模式,提供了一种创建对象的最佳方式。在Java中,工厂模式通过创建一个工厂类来生产特定类型的对象...

    设计模式之策略模式源码(C#+.NET6)

    在C#与.NET6框架下,策略模式的应用能够帮助我们实现代码的灵活性和可扩展性。下面将详细讲解策略模式的核心概念、实现方式以及如何在实际项目中应用。 **1. 概念理解** 策略模式定义了一系列算法,并将每个算法...

    java策略模式小例子

    2. 具体策略(Concrete Strategy)类:实现了抽象策略接口,提供了具体的算法实现。 3. 上下文(Context)类:使用抽象策略接口来调用具体策略对象的算法。上下文维护了一个指向某个具体策略对象的引用,但并不直接...

    策略模式具体用法

    策略模式是一种设计模式,它允许将算法封装在独立的类中,从而可以在运行时动态地选择和更改算法。这种模式的核心在于将算法的行为与环境分离,使得算法可以在不改变环境的情况下进行修改或替换,增强了系统的灵活性...

    软件体系结构与设计模式-第七章策略模式ppt课件.ppt

    具体策略(ConcreteStrategy)是实现策略接口或抽象类的类,它提供了具体的算法实现。上下文(Context)是使用策略的类,它可以根据需要选择不同的策略来实现不同的算法。 在策略模式中,算法的变化是独立于使用它...

    策略模式 演化过程 重构过程

    在实际应用中,策略模式可以用于许多场景,例如在购物车系统中,根据用户的优惠策略(如满减、打折等)选择不同的计算价格的算法;在游戏设计中,不同的AI行为可以看作是不同的策略;在数据分析中,不同的数据处理...

    js策略模式和代理模式

    JavaScript中的策略模式通常涉及将算法的定义与其使用者分离,使用者根据不同的上下文环境选择不同的算法策略。 在给定的代码示例中,定义了三种算法策略来计算奖金(award),分别对应不同的级别(level):S级、A...

    策略模式(C#)

    2. **具体策略类(Concrete Strategy Classes)**:实现了策略接口,提供了具体的算法实现。每个具体策略类代表了一种特定的解决策略。 3. **上下文(Context)**:使用策略接口来调用相应的算法。上下文通常持有对...

    策略模式源码

    通过策略模式,我们可以将算法的决策与使用算法的代码分离,使得系统更加灵活,易于扩展和维护。 设计模式是软件设计中的重要思想,可以帮助我们编写可复用、可维护的代码。策略模式作为行为型模式的一种,强调的是...

    策略模式(PPT)

    策略模式是一种设计模式,它使你能在运行时改变对象的行为,通过将算法封装在独立的策略类中,实现了策略的可替换性。这种模式的核心思想是将策略对象的选取和执行算法的责任分离,使得策略对象可以根据不同的上下文...

    策略模式demo

    2. **具体策略类**:实现了策略接口,提供具体的算法实现。这些类是策略的实现,每个类封装了一种算法。 3. **上下文角色**:上下文使用了策略对象来执行算法。上下文可能知道它的具体策略类,但通常它可以通过策略...

    策略模式(Java)

    2. **具体策略类**(Concrete Strategy Classes):实现了策略接口,提供了具体的算法实现。例如,`FlyWithWings`和`FlyNoWay`实现了`FlyBehavior`接口,`Quack`和`Squeak`实现了`QuackBehavior`接口。 3. **上下文...

    运用lambda表达式+策略模式实现平台扩展(Extension)

    策略模式通常用于当有多种算法可以选择,或者需要在运行时动态选择算法的情况。通过将策略对象注入到客户端,我们可以根据需要灵活地切换策略,而无需修改客户端代码。 在Java中,策略模式常常结合接口实现,但随着...

    行为型模式(Behavioral)之策略模式

    - **解耦**:策略模式将算法的使用和实现分离,降低了系统的耦合度。 在实际应用中,策略模式常用于处理具有多种实现方式的复杂逻辑,例如排序算法、支付方式、打折策略等。在软件开发过程中,如果一个类需要根据...

Global site tag (gtag.js) - Google Analytics