美文网首页
策略模式(Strategy)

策略模式(Strategy)

作者: 群众里面有坏人呐 | 来源:发表于2019-01-01 16:34 被阅读0次

定义

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

角色

  • 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...

相关文章

网友评论

      本文标题:策略模式(Strategy)

      本文链接:https://www.haomeiwen.com/subject/olinlqtx.html