美文网首页
策略模式

策略模式

作者: 追逐的梦境 | 来源:发表于2020-06-15 23:13 被阅读0次

    策略模式:定义一系列的算法,并将每个算法封装起来,可以使他们相互替换,让算法独立于使用它的客户而独立变化。

    策略模式几个组成组件:
    1.Context:算法调用者,使用setStrategy方法灵活的选择策略(strategy);
    2.Strategy:算法的统一接口;
    3.ConcreteStrategy: 算法的具体实现

    策略模式.png

    示例:在不同商家买苹果
    Strategy:算法接口

    public interface BuyApple {
    
    
        void buyApple();
    
    }
    

    ConcreteStrategy:算法具体实现

    public class Merchant1 implements BuyApple{
        @Override
        public void buyApple() {
            System.out.println("商家1买苹果");
        }
    }
    
    
    public class Merchant2 implements BuyApple {
        @Override
        public void buyApple() {
            System.out.println("商家2买苹果");
        }
    }
    

    Context:算法调用者

    public class Buyer {
    
        BuyApple buyApple;
    
        public void setBuyApple(BuyApple buyApple){
            this.buyApple = buyApple;
        }
    
        public void merchantSelection(){
            buyApple.buyApple();
        }
    
        public static void main(String[] args) {
            Buyer buyer = new Buyer();
            buyer.setBuyApple(new Merchant1());
            buyer.merchantSelection();
        }
    

    策略模式的使用场景:

    针对同一类型的问题有多种处理方式,仅仅在具体实现上有不同的方式;
    出现同一抽象类有多个子类,而又需要使用 if-else 或者 switch-case 来选择具体子类时。

    相关文章

      网友评论

          本文标题:策略模式

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