问题遇到的现象和发生背景
我有一个订单处理类,比如叫OrderService
1、在开始的时候,需求是增删改查Order,于是写了对应的方法;
2、随着业务发展,需要根据用户支付情况,修改订单的状态;比如刚生成是待结算,用户支付完成之后是已支付,用户中途取消是已取消等等;于是在OrderService中增加了UpdateOrderState的方法,用来管理订单的状态;
3、现在引入会员概念,当会员支付成功后,需要计算会员获得的积分;于是在UpdateOrderState方法中增加了会员积分的处理;
4、现在允许退货,当会员支付完成又退货时候,需要扣减会员积分;于是在UpdateOrderState方法中增加了调用 订单退货时候,对于获得的积分的扣减的处理 接口;
5、现在增加老会员介绍新会员奖励积分的需求,当会员支付完成订单之后,需要计算出奖励积分,给老会员加上;于是UpdateOrderState方法中增加了 调用 老会员奖励积分的处理接口;
6、同样,如果会员退货之后,也要处理老会员奖励积分退还的逻辑;
随着业务需求的变化,OrderService类以及UpdateOrderState方法中调用的接口就会越来越多
比如要调用execMemberPoint()、execReturnPoint()、execBonusPoint()等等一系列接口
等哪一天需求变化,又不需要奖励积分了,又要把这个调用从方法中取消
那么,采用什么样的设计方法才能减少这种叠加,尽量少改动代码以适应业务变化呢?
我的解答思路和尝试过的方法
我想过装饰器模式、动态代理、filter等方法,但是都觉得不太合适