设计模式-策略模式

在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:客户端代码,演示了如何使用不同的策略。

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

相关推荐
五点六六六5 小时前
基于 AST 与 Proxy沙箱 的局部代码热验证
前端·设计模式·架构
qq_2320455714 小时前
精积微半导体面试(部分)
netty·策略模式·nio·内存抖动·threadlocal·bitmap·复用
wwdoffice011019 小时前
304和316不锈钢有什么区别?哪个更好?
设计模式
网小鱼的学习笔记19 小时前
创建型设计模式(工厂、builder、原型、单例)
java·后端·设计模式
逆境不可逃19 小时前
【从零入门23种设计模式21】行为型之空对象模式
java·开发语言·数据库·算法·设计模式·职场和发展
蜜獾云1 天前
设计模式之命令模式:给其他模块下达命令
设计模式·命令模式
小湘西2 天前
拓扑排序(Topological Sort)
python·设计模式
蜜獾云2 天前
设计模式之观察者模式:监听目标对象的状态改变
观察者模式·设计模式·rxjava
知无不研2 天前
中介者模式
c++·设计模式·中介者模式
badhope2 天前
OpenClaw卸载命令全解析
java·linux·人工智能·python·sql·数据挖掘·策略模式