利用SpringBean管理来实现策略模式用以消灭项目中的if-else

本文介绍了如何利用SpringBean管理来实现策略模式,以解决项目中复杂的if-else问题。通过创建策略接口、具体策略实现和策略上下文,结合Spring的Bean管理功能,实现了会员等级折扣处理的无if-else调用。通过枚举绑定类型和实现,可以根据注册的Bean名称调用相应策略,简化了代码并提高了可扩展性。
摘要由CSDN通过智能技术生成

我们先来了解一下策略模式的概念

定义:

  • 策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代,使算法本身和使用算法的客户端分割开来,相互独立

结构:

  • 策略接口角色IStrategy:用来约束一系列具体的策略算法,策略上下文角色ConcreteStrategy使用此策略接口来调用具体的策略所实现的算法。

  • 具体策略实现角色ConcreteStrategy:具体的策略实现,即具体的算法实现。

  • 策略上下文角色StrategyContext:策略上下文,负责和具体的策略实现交互,通常策略上下文对象会持有一个真正的策略实现对象,策略上下文还可以让具体的策略实现从其中获取相关数据,回调策略上下文对象的方法。

我们再来分析一下平时的业务场景中,有什么场景可以用到我们的策略模式

首先举一个用烂了的例子某商城项目的会员,针对某件商品,不同会员等级有不同会员的处理方式,比如普通会员无折扣,青铜会员满100-10,白银会员打八折,黄金会员打八折且满100-20,需求几乎没有重合性只能依据类型判断.

第二个例子,众所周知每个提供翻译功能的平台基本都会有一些免费的额度,比如百度翻译,有道翻译等等如果我们想白嫖这些翻译的时间,就要根据不同家的文档去实现不同的翻译接口.

上面两个例子在普通的代码中基本就是


//伪代码
public void discount(int userType){
 if(userType==黄金会员){
        //do sth
    }else if(userType==白银会员){
        //do sth
    }else if(...)
}
   

每加一个会员等级 都会对应一个if-else如果会员等级躲起来或者增加了新的折

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值