美文网首页
策略模式

策略模式

作者: 追逐的梦境 | 来源:发表于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