一、定义:
策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一系列的算法包装
到一系列的策略类里面,作为一个抽象策略类的子类。
简单来说就是就定义一个策略接口,子类策略去实现该接口去定义不同的策略。然后定义一个环境(Context,也就
是需要用到策略的对象)类,以策略接口作为成员变量,根据环境来使用具体的策略。
二、优点:
1、算法可以自由切换。
2、避免使用多重条件判断。
3、扩展性良好。
三、缺点:
1、策略类会增多。
2、所有策略类都需要对外暴露。
四、 策略模式实战
案例:结算价格计算,根据Vip不同等级进行运算
1、不同VIP优惠价格分析
用户在购买商品的时候,很多时候会根据Vip等级打不同折扣,尤其是在线商城中体现的淋漓尽致。我们这里也基于真实电商案例来实现VIP等级价格制:
Vip0->普通价格
Vip1->减5元
Vip2->7折
Vip3->5折
2、 代码实现
(1)定义策略接口: Strategy
(2)定义Vip0策略: StrategyVipOne
(3)定义Vip1策略: StrategyVipTwo
(4)定义Vip2策略: StrategyVipThree
(5)定义策略工厂: StrategyFactory
(6)等级策略配置:修改application.yml,将如下策略配置进去
strategy:
strategyMap:
1: strategyVipOne
2: strategyVipTwo
3: strategyVipThree
(7)测试
(8)总结:常用VIP客户打折问题,先定义一个策略接口,用于价格计算,然后定义几个类vip0,vip1,vip2,实现策略接口,控制分别打几折,然后定义一个策略工厂,根据不同的vip等级,获取不同的策略实例。