概念
策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。
1.环境(Context)角色:持有一个Strategy的引用。
2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
3.具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
定义策略接口->实现不同的策略类->利用多态或其他方式调用策略
图片.png
应用场景
异步实现发送短信 比如阿里云、腾讯云、其他短信渠道等
聚合支付系统 银联支付、支付宝、微信支付等
联合登陆 QQ、钉钉、微信联合登陆渠道等
实现方式
建一个策略表,其中有策略id和执行具体策略逻辑的bean id
写一个策略接口,并定义一个执行策略的方法
写一个bean,并实现策略接口。把该类的首字母小写的类名写到策略表的bean id字段里,并起一个策略id。
需要执行策略的时候根据策略id从表里获取该策略的bean id,然后从spring 容器中取该bean,并执行该bean里的策略方法。