设计模式-策略模式

在Java中实现策略模式,可以通过定义一个策略接口和多个具体策略类,然后在上下文类中使用这些策略。以下是一个简单的Java策略模式示例:

策略接口

java 复制代码
// 策略接口
public interface Strategy {
    void algorithmInterface();
}

具体策略类

java 复制代码
// 具体策略A
public class ConcreteStrategyA implements Strategy {
    @Override
    public void algorithmInterface() {
        System.out.println("Algorithm A");
    }
}

// 具体策略B
public class ConcreteStrategyB implements Strategy {
    @Override
    public void algorithmInterface() {
        System.out.println("Algorithm B");
    }
}

上下文类

java 复制代码
// 上下文类
public class Context {
    private Strategy strategy;

    // 设置策略
    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }

    // 执行策略
    public void executeStrategy() {
        strategy.algorithmInterface();
    }
}

客户端代码

java 复制代码
public class StrategyPatternDemo {
    public static void main(String[] args) {
        Context context = new Context();

        // 使用策略A
        context.setStrategy(new ConcreteStrategyA());
        context.executeStrategy();  // 输出: Algorithm A

        // 使用策略B
        context.setStrategy(new ConcreteStrategyB());
        context.executeStrategy();  // 输出: Algorithm B
    }
}

运行结果

复制代码
Algorithm A
Algorithm B

解释

  1. Strategy 接口 :定义了一个算法接口 algorithmInterface
  2. ConcreteStrategyA 和 ConcreteStrategyB :实现了 Strategy 接口,提供了具体的算法实现。
  3. Context 类 :持有一个 Strategy 对象,并通过 setStrategy 方法来设置具体的策略。通过 executeStrategy 方法来执行当前策略的算法。
  4. StrategyPatternDemo:客户端代码,演示了如何使用不同的策略。

通过这种方式,可以在运行时动态地改变对象的行为,而无需修改上下文类的代码。

相关推荐
大G的笔记本11 分钟前
Java常见设计模式面试题(高频)
java·开发语言·设计模式
老鼠只爱大米17 分钟前
Java设计模式之建造者模式(Builder)详解
java·设计模式·建造者模式·builder·23种设计模式
guangzan6 小时前
常用设计模式:职责链模式
设计模式
ZHE|张恒6 小时前
设计模式实战篇(二):业务逻辑“随时切换招式”——策略模式(Strategy Pattern)解析
设计模式·策略模式
小二·9 小时前
设计模式面试题(14道含答案)
设计模式
老鼠只爱大米16 小时前
Java 设计模式之适配器模式:系统集成的万能接口
java·设计模式·适配器模式·adapter·java设计模式
o0向阳而生0o21 小时前
112、23种设计模式之命令模式(20/23)
设计模式·命令模式
将编程培养成爱好1 天前
C++ 设计模式《外卖骑手状态系统》
c++·ui·设计模式·状态模式
猿太极1 天前
设计模式学习(3)-行为型模式
c++·设计模式
快乐非自愿1 天前
常用设计模式:工厂方法模式
javascript·设计模式·工厂方法模式