使用策略模式消除if-else

为什么要这么做?

开发订单功能的时候,对订单的业务处理涉及到多种订单类型,对应不同的业务方法,比如市价买入、市价卖出,限价买入、限价卖出,止损买入、止损卖出等等。
很自然的我们会想到用if-else或者switch结构去处理。
我承认我有赌的成分

        if ("BUY_MARKET_ORDER".equals(orderType)) {
            //市价买入逻辑
        } else if ("SELL_MARKET_ORDER".equals(orderType)) {
            //市价卖出逻辑
        } else if ("BUY_LIMIT_ORDER_GOODS".equals(orderType)) {
            //限价买入逻辑
        } else if ("SELL_LIMIT_ORDER_GOODS".equals(orderType)) {
            //限价卖出逻辑
        } else if ("BUY_STOP_ORDER".equals(orderType)) {
            //止损买入逻辑
        } else if ("SELL_STOP_ORDER".equals(orderType)) {
            //止损卖出逻辑
        }
        else {
            //未知订单类型
            System.out.println("任务类型无法处理");
        }

如果是逻辑代码十分简短的话,if-else是没什么大问题的,思路清晰,分支也很清楚。
但如果需要处理的逻辑较为复杂,会显得if-else非常的臃肿,代码的可读性和可维护性大大的降低。

认识策略模式

策略模式介绍
https://www.cnblogs.com/java-my-life/archive/2012/05/10/2491891.html

TALK IS CHEAP,SHOW ME THE CODE

https://juejin.im/post/6844903874596175880

潜在的bug

遇到个问题:
context.getBeanOfType(Class)获取不到对应的bean。
debug跟踪到AbstractBeanFactory类中发现其实是抛出异常了
Error creating bean with name 'buyMarketServiceImpl': Requested bean is currently in creation: Is there an unresolvable circular reference?
因为Spring的logger.isTraceEnabled()默认没开,所以没有把错误日志打印出来。

Spring循环依赖介绍和解决方法

建议handler里面注入bean的方式改为setter注入以解决循环依赖报错的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值