关于使用策略模式消除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实现即可;
00
相似问题