Helper or Interface

以VCD租借为例,新业务需求是在每次出租及收回VCD的时候,把相关的业务信息的变动记录下来以便于跟踪。例如,出租一次VCD的时候,就增加一条记录以保存本次的交易情况。从出租到归还VCD整个业务完成的时候,就有相关的记录可以追溯整个交易历史。

这里有两个model, VCD和Trail,两者在系统中都已经有了,现在的关键是如何让VCD转化成Trail。初始的版本比较糟糕,在TrailManager中直接写个新方法,以VCD为参数,功能就是把VCD转成Trail然后调用Dao持久化。代码的问题是显而易见的,我就不多说了。重构--把TrailManager中新加的方法去掉,VCD转成Trail的代码移到VCDManager的rent方法中。问题又出来了,renew(续借)和return(归还)也要被跟踪,于是,model转换的代码到处都是。再重构的时候就发生了争论,争论的双方都同意要消除重复的代码,差别在于,一种观点是把model转换的代码抽出来放在VCDHelper中,只需要写一次就够了。只一种观点则认为跟踪属于VCD的附加功能,从Trail抽出一个接口,让VCD也实现它,这样更简单。

基于现在的代码,两种方式都很好,而且我也看不出哪种方式有明显的优势。如果你认为AOP也许会是更好的解决方案,那么我必须说这里用AOP太大材小用。

你有什么高见?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值