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

内容纲要

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户端,使得客户端可以根据需要切换不同的算法实现。

以下是一个简单的Java实现:

  1. 创建策略接口(Strategy Interface),表示算法的接口:
public interface Strategy {
    void execute();
}
  1. 创建具体策略类(Concrete Strategy),实现策略接口:
public class ConcreteStrategyA implements Strategy {
    @Override
    public void execute() {
        System.out.println("Executing Concrete Strategy A");
    }
}

public class ConcreteStrategyB implements Strategy {
    @Override
    public void execute() {
        System.out.println("Executing Concrete Strategy B");
    }
}

public class ConcreteStrategyC implements Strategy {
    @Override
    public void execute() {
        System.out.println("Executing Concrete Strategy C");
    }
}
  1. 创建上下文类(Context),包含一个策略接口的引用:
public class Context {
    private Strategy strategy;

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

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

    public void executeStrategy() {
        strategy.execute();
    }
}
  1. 使用策略模式创建对象:
public class Main {
    public static void main(String[] args) {
        Strategy strategyA = new ConcreteStrategyA();
        Strategy strategyB = new ConcreteStrategyB();
        Strategy strategyC = new ConcreteStrategyC();

        Context context = new Context(strategyA);
        context.executeStrategy();

        context.setStrategy(strategyB);
        context.executeStrategy();

        context.setStrategy(strategyC);
        context.executeStrategy();
    }
}

运行上述代码,你将看到:

Executing Concrete Strategy A
Executing Concrete Strategy B
Executing Concrete Strategy C

策略模式让算法独立于使用它的客户端,使得客户端可以根据需要切换不同的算法实现。这种模式在需要在运行时动态地选择不同算法实现的情况下非常有用,例如排序算法、加密算法和压缩算法等

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward