策略模式

2020-06-15  本文已影响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 来选择具体子类时。

上一篇 下一篇

猜你喜欢

热点阅读