Java常用设计模式-策略模式

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

策略模式是一个非常实用的设计模式,指定义了一类算法并将其封装起来,并使得它们之间可以灵活地切换,并且不影响客户端。

1,从一个例子开始

我们常常会在网上买东西,很多购物平台都会有着各种各样的优惠策略供你选择例如满减优惠、返现优惠等等。

假设现在要开发一个商城系统,并要开发优惠策略,需要实现不使用优惠满减优惠返现优惠三个策略。

这一步很简单,我们将优惠进行抽象,创建一个优惠接口Promotion如下:

package fun.swsk33site.strategy.promotion;

import fun.swsk33site.strategy.model.Order;

/**
 * 促销活动抽象接口
 */
public interface Promotion {

   /**
    * 执行促销策略
    *
    * @param order 传入订单进行相应折扣
    */
   void doPromotion(Order order);

}
复制代码

然后创建该接口的实现类NoPromotionFullDiscountPromotionCashBackPromotion分别代表不使用优惠、满减优惠和返现优惠:

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值