策略模式

概念

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

角色

  • 共同特性的抽象方法
  • 各个不同的算法对象
  • 选择算法的 context对象

利弊

  • 扩展方便
  • 耦合低

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();
    }

}

拓展

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容