设计模式 | 策略模式

69 阅读1分钟

简介

将算法或策略抽象出来,提供一个统一的接口,客户端通过注入不同的实现对象来达到算法或策略的动态替换。

定义

定义一系列的算法,并将每种算法单独封装起来,而且使它们可以相互替换,让算法独立于使用它的客户而独立变化。

使用场景

  • 针对同一类型的问题的多种处理方式,仅仅是具体的行为有差别。
  • 需要安全地封装多种同一类型的操作。

Java 代码示例

public interface Strategy {
    void calculate();
}

public class AStrategy implements Strategy {
    @Override
    public void calculate() {

    }
}

public class BStrategy implements Strategy {
    @Override
    public void calculate() {

    }
}

public class Calculator {
    private Strategy mStrategy;

    public void setStrategy(Strategy strategy) {
        mStrategy = strategy;
    }

    public void calculate() {
        mStrategy.calculate();
    }
}