美文网首页
策略模式

策略模式

作者: swowg | 来源:发表于2016-11-29 16:38 被阅读0次

    一、创建Strategy抽象类,定义所有支持的算法的公共接口:

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

    二、创建一系列ConcreteStrategy类,继承与Strategy:
    ConcreteStrategyA:

    public class ConcreteStrategyA extends Strategy {
        @Override
        public void AlgorithmInterface() {
            System.out.println("实现 Algorithm A!");
        }
    }
    

    ConcreteStrategyB:

    public class ConcreteStrategyB extends Strategy {
        @Override
        public void AlgorithmInterface() {
            System.out.println("实现 Algorithm B!");
        }
    }
    

    ConcreteStrategyC:

    public class ConcreteStrategyC extends Strategy {
        @Override
        public void AlgorithmInterface() {
            System.out.println("实现 Algorithm C!");
        }
    }
    

    三、创建Context,用一个ConcreteStrategy来配置、维护一个队Strategy对象的引用:

    public class Context {
        Strategy strategy;
        //初始化时传入具体的策略对象。
        public Context(Strategy strategy){
            this.strategy = strategy;
        }
        //上下文接口
        //根据具体的策略对象,调用其算法方法
        public void ContextInterface(){
            strategy.AlgorithmInterface();
        }
    }
    

    四、StrategyMain:

    public class StrategyMain {
        public static void main(String[] args) {
            Context context;
            context = new Context(new ConcreteStrategyA());
            context.ContextInterface();
            context = new Context(new ConcreteStrategyB());
            context.ContextInterface();
            context = new Context(new ConcreteStrategyC());
            context.ContextInterface();
        }
    }
    

    五、小结:
    策略模式是一种定义一系列算法的模式,从整体看来这些算法的目的都是一致的,只是实现不同。策略模式可以以相同的方式调用所有的算法,减少了算法类与使用算法的类之间的耦合。

    相关文章

      网友评论

          本文标题:策略模式

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