记第一次在工作中用设计模式重构代码

小弟在某物流公司工作,近期临近过年需求比较松,发现项目的一个模块使用大量的if-else语句,于是乎想到用设计模式进行重构。

一、业务场景以及出现的问题

项目中有一个用户修改记录模块,对应数据库USER_MODIFY表,每次用户对主业务模块进行操作(如增加,删除,编辑等)会增在用户修改记录模块中增加相应信息(用户,操作名称等)。

现在项目中的代码存在下列问题:

使用了大量的if-else操作,增加用户修改记录方法addUserModifyRecord入参有两个:修改的对象Object,操作名称 Enum类型的ModifyType,对于每次的操作都对object和modifytype进行instanceof 和 if-else判断,最后决定应该向修改记录表中增加内容的具体值

二、解决思路

1、初步解决方案使用策略模式+工厂模式

三、策略模式+工厂模式消除if-else

Main.png

如图所示为大致的uml图,下面做出一些解释:

1、UserModifyStrategy为策略的接口,下面声明了我们需要重构的方法

2、ViewScheduleStrategy等三个类为接口的实现,实现具体对应的策略细节

3、UserModifyContext为策略的引用

4、最下的工厂类负责根据object对策略进行创建

 

四、思考

这个方案有一个缺点就是类太多了,在实际项目中这样需要额外增加七八个类,后期再考虑用JDK8的函数式编程来进行重构,主要就是利用JDK8的Predicate和Consumer进行重构,目前还在学习其用法当中,欢迎各路大佬给予指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值