关于使用策略模式消除if....else if....的问题

来源:19-2 策略模式coding

我是可愛蛋蛋

2024-02-01

老师,你好,我想问一下,在课程里面讲的活动促销策略代码里面,每个活动的策略都需new出来,不同的策略需要new对应的策略类,那我在new之前岂不是还是需要用if判断当前是618还是1111还是其他等活动吗?如图:
图片描述
麻烦老师给讲解一下,谢谢了

写回答

1回答

geelylucky

2024-02-20

同学你好,咱们可以假设promotionActivity618和promotionActivity1111对象都创建好了,它们都是PromotionActivity接口下的对象,我们在业务当中肯定是要根据某个标识来确定使用哪个PromotionActivity对象的,那么我们的接口中应该要有某个方法:

boolean match(String code){

}

传递进来的code就决定了我们是否可以使用当前的对象来执行业务逻辑,只有符合要求的PromotionActivity对象才能真正地执行对应的目标策略;

在这样的代码中,我们不需要去一个一个编写if...else...逻辑,直接通过策略模式把所有的情况都考虑进去了,即使将来再有123这种情况,我们也只需要扩展对应的PromotionActivity实现即可;

0
0

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3430 学习 · 407 问题

查看课程