策略模式

2018-09-19  本文已影响0人  Neo_xu

概念

一个类的行为或其算法可以在运行时更改

角色

利弊

demo

支付的场景

// 算法的抽象接口
public interface Pay {
   public void pay();
}
public class AliPay implements Pay {
    @Override
    public void pay() {
        System.out.println("阿里支付");
    }

}
public class WeChatPay implements Pay {

    @Override
    public void pay() {
        System.out.println("微信支付");
    }

}

public class PayStrategy {
    private Pay pay;
    PayStrategy(Pay pay){
        this.pay = pay;
    }
    public void exePay(){
        pay.pay();
    }
}
public class PayStrategyTest {
    public static void main(String[] args) {
        PayStrategy  strategy  = new PayStrategy(new AliPay());
        strategy.exePay();
        strategy = new PayStrategy(new WeChatPay());
        strategy.exePay();
    }

}

拓展

对于策略太多,可以使用策略列表进行策略匹配

上一篇 下一篇

猜你喜欢

热点阅读