策略模式是一个非常实用的设计模式,指定义了一类算法并将其封装起来,并使得它们之间可以灵活地切换,并且不影响客户端。
1,从一个例子开始
我们常常会在网上买东西,很多购物平台都会有着各种各样的优惠策略供你选择例如满减优惠、返现优惠等等。
假设现在要开发一个商城系统,并要开发优惠策略,需要实现不使用优惠、满减优惠和返现优惠三个策略。
这一步很简单,我们将优惠进行抽象,创建一个优惠接口Promotion如下:
package fun.swsk33site.strategy.promotion;
import fun.swsk33site.strategy.model.Order;
/**
* 促销活动抽象接口
*/
public interface Promotion {
/**
* 执行促销策略
*
* @param order 传入订单进行相应折扣
*/
void doPromotion(Order order);
}
复制代码
然后创建该接口的实现类NoPromotion、FullDiscountPromotion和CashBackPromotion分别代表不使用优惠、满减优惠和返现优惠:
package fun.swsk33site.strategy.promotion.impl;
import fun.swsk33site.strategy.model.Order;
import fun.swsk33site.strategy.promotion.Promotion;
/**
* 不使用优惠
*/
public class NoPromotion implements Promotion {
@Override
public void doPromotion(Order order) {
System.

本文深入探讨了Java中的策略模式,通过一个购物优惠策略的例子展示了如何使用策略模式来解决复杂条件下的决策问题。文章首先从一个简单的购物系统开始,解释了在没有使用策略模式时代码的冗余问题,接着介绍了如何通过策略模式进行改造,创建了一个策略选择类以动态选择优惠策略。最后,总结了策略模式的适用场景和优缺点,强调了其在提高系统可维护性和避免条件语句上的优势。
最低0.47元/天 解锁文章
1953

被折叠的 条评论
为什么被折叠?



