策略模式(Strategy)

定义

策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类,视实际需求是否添加),提供辅助函数。

角色

  • Context: 环境类
  • Strategy: 抽象策略类
  • ConcreteStrategy: 具体策略类

实例

定义抽象策略角色

public abstract class Strategy {
    public abstract void show();
}

定义具体策略角色

public class StrategyA extends Strategy {
    @Override
    public void show() {
        System.out.println("use strategy A...");
    }
}
public class StrategyB extends Strategy {
    @Override
    public void show() {
        System.out.println("use strategy B...");
    }
}
public class StrategyC extends Strategy {
    @Override
    public void show() {
        System.out.println("use strategy C...");
    }
}

定义环境角色

public class Context {

    private Strategy strategy;

    public Context(String str) {
        switch (str){
            case "A":
                strategy = new StrategyA();
                break;
            case "B":
                strategy = new StrategyB();
                break;
            case "C":
                strategy = new StrategyC();
                break;
        }
    }

    public void chooseStrategy(){
        strategy.show();
    }
}

测试

public class Test {
    public static void main(String[] args) {
        Context context = new Context("A");
        context.chooseStrategy();
    }
}

输出结果

use strategy A...
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容