【91、Java 策略模式的实现实例】

76 阅读2分钟

Java 策略模式(Strategy Pattern)是一种行为型设计模式,用于封装一组可以互相替换的算法,使得客户端在不必修改原始代码的情况下,能够选择不同的算法来解决问题。

在策略模式中,通常会定义一个抽象策略接口,其中包含了算法的抽象方法,具体策略类则实现了这个接口,并实现了自己的算法逻辑。此外,还需要一个上下文对象,它包含了一个对抽象策略接口的引用,并通过该引用调用具体策略类的算法。

下面是一个简单的 Java 策略模式的实现示例:

首先定义一个抽象策略接口,其中包含了一个抽象方法 calculate:

public interface CalculationStrategy {
    int calculate(int a, int b);
}

然后定义两个具体策略类,分别实现了抽象策略接口,提供了自己的算法逻辑:

public class AddStrategy implements CalculationStrategy {
    public int calculate(int a, int b) {
        return a + b;
    }
}

public class SubtractStrategy implements CalculationStrategy {
    public int calculate(int a, int b) {
        return a - b;
    }
}

最后定义一个上下文对象,它包含了一个对抽象策略接口的引用,并通过该引用调用具体策略类的算法:

public class CalculationContext {
    private CalculationStrategy strategy;

    public CalculationContext(CalculationStrategy strategy) {
        this.strategy = strategy;
    }

    public void setStrategy(CalculationStrategy strategy) {
        this.strategy = strategy;
    }

    public int executeStrategy(int a, int b) {
        return strategy.calculate(a, b);
    }
}

使用时,我们可以根据不同的需求,选择不同的具体策略类来解决问题:

CalculationContext context = new CalculationContext(new AddStrategy());
System.out.println(context.executeStrategy(3, 4)); // 输出 7

context.setStrategy(new SubtractStrategy());
System.out.println(context.executeStrategy(3, 4)); // 输出 -1

这样,我们就成功地使用了策略模式,将算法的实现与调用代码分离开来,使得我们可以在不修改原始代码的情况下,更换不同的算法实现。