三步走
是什么?
策略模式:通过封装的形式,把策略封装起来。在遇到相同场景的问题,可以动态的获取策略来解决。
为什么?
程序设计的时候需要考虑,
扩展性:使用策略模式可以让代码的拓展性提升。
复用性:具体的实现不用耦合到业务代码中,可以实现复用。
怎么办?
比如支付对接第三方的时候有多种:微信、支付宝、通联。后面还可能对接其他的。
这时候我们就可以使用策略模式
- 先定义PayOrderStrategy接口,定义createOrder方法。
- 然后再定义WeiChat(微信),Alipay(支付宝),Allin(通联),实现接口。
- 在定义PayOrderContext,这里包括两个属性String type,PayOrderStrategy strategy。
- 具体是用的时候就是通过传入type或去对应的支付方式。在通过对应的支付方式去调用createOrder。
总结:
策略模式主要包括三种类型的对象:strategy,context以及具体实现strategy的类。
策略模式使用场景
一个项目中有许多类,他们的区别仅仅是他们的行为,这时候希望动态的通过一个对象在许多对象中选择一种行为。(支付对接第三方的时候,上面的列子)
一个项目需要动态的在几种算法中选择一种。(comparator接口)
一个对象有很多行为,不希望使用多重的条件判断来选择使用某种行为时。(支付宝创建订单的时候,有多种方式,扫码支付,app支付,web支付。这时候可以使用)