肖哥弹架构 跟大家“弹弹” 业务中设计模式的使用,需要代码关注
欢迎 点赞,点赞,点赞。
关注公号Solomon肖哥弹架构获取更多精彩内容
在电商平台中,优惠券系统是促销和吸引顾客的重要工具。不同的优惠券有不同的使用策略,例如满减、打折、买赠等。为了灵活地应对市场变化,需要动态地更换优惠券策略。
2. 为什么要使用策略设计模式
策略模式允许在运行时选择算法或行为,将算法的使用和实现分离,提高系统的灵活性和可扩展性。
3. 标准策略设计模式图
4. 业务策略设计模式图
5. 业务代码参考
????//?优惠券策略接口 ????interface?CouponStrategy?{ ????????double?apply(double?originalPrice); ????} ????//?满减策略 ????class?FullReductionStrategy?implements?CouponStrategy?{ ????????public?double?apply(double?originalPrice)?{ ????????????//?假设满100减10 ????????????int?discount?=?(int)?(originalPrice?/?100)?*?10; ????????????return?originalPrice?-?discount; ????????} ????} ????//?打折策略 ????class?DiscountStrategy?implements?CouponStrategy?{ ????????private?double?discount; ????????public?DiscountStrategy(double?discount)?{ ????????????this.discount?=?discount; ????????} ????????public?double?apply(double?originalPrice)?{ ????????????return?originalPrice?*?(1?-?discount); ????????} ????} ????//?买赠策略 ????class?BuyGiftStrategy?implements?CouponStrategy?{ ????????public?double?apply(double?originalPrice)?{ ????????????//?假设买200赠50 ????????????if?(originalPrice?>=?200)?{ ????????????????return?50; ????????????} ????????????return?0; ????????} ????} ????//?优惠券上下文 ????class?CouponContext?{ ????????private?CouponStrategy?couponStrategy; ????????public?void?setCouponStrategy(CouponStrategy?couponStrategy)?{ ????????????this.couponStrategy?=?couponStrategy; ????????} ????????public?double?applyCoupon(double?originalPrice)?{ ????????????if?(couponStrategy?!=?null)?{ ????????????????return?couponStrategy.apply(originalPrice); ????????????} ????????????return?originalPrice; ????????} ????} ????//?客户端使用 ????class?ECommercePlatform?{ ????????public?static?void?main(String[]?args)?{ ????????????CouponContext?couponContext?=?new?CouponContext(); ????????????//?设置满减策略 ????????????couponContext.setCouponStrategy(new?FullReductionStrategy()); ????????????System.out.println("After?applying?full?reduction:?"?+?couponContext.applyCoupon(210)); ????????????//?更换为打折策略 ????????????couponContext.setCouponStrategy(new?DiscountStrategy(0.1)); ????????????System.out.println("After?applying?discount:?"?+?couponContext.applyCoupon(210)); ????????????//?更换为买赠策略 ????????????couponContext.setCouponStrategy(new?BuyGiftStrategy()); ????????????System.out.println("After?applying?buy?gift:?"?+?couponContext.applyCoupon(210)); ????????} ????}
6. 使用策略设计模式的好处
灵活性:动态更换优惠券策略,快速响应市场变化。
可扩展性:新增优惠券策略时无需修改现有代码。
7. 其他使用策略设计模式场景参考
支付策略:不同支付方式的手续费计算。
排序算法:根据不同需求选择不同的排序算法。
8. 可参考开源框架
Java Streams API:使用策略模式来实现不同的排序和搜索算法。
总结
策略模式提供了一种灵活的算法替换机制,通过定义一系列可互换的策略,可以动态地改变对象的行为。
本文暂时没有评论,来添加一个吧(●'◡'●)