读《设计模式解析》后对Dao层的重构

周末用了一天时间浏览了一遍《设计模式解析》这本书,其中很多观念令人耳目一新,根据作者反复提到的两条原则:

  • 找出变化并封装之。
  • 优先使用对象聚集,而不是类继承。

我突发奇想,对以前产品中的Dao部分做个简单的修改,当然,目前只是一个简单的设想。下面是以前的设计类图:



修改后的类图如下:

  • 其实第一种方案中也实现了“找出变化并封装之”的原则,但第二种方案中对变化的把握更细致更精确。
  • 表面上看,类的继承层次和数量并没有减少,但站在Dao的角度来看,优先使用了聚集,继承层次变得简单了。“优先使用对象聚集,而不是类继承”,有时候能够减少继承层次,有时则仅仅把继承再次封装起来了,继承本身并没有什么不好,关键是使用它的方式。这正如在创建对象时使用了大量的if... else,我们也许会想到用一个工厂封装之,其实if...else并没有消失,只是跑到工厂对象里去了。
  • 第二种方案中并没有创建一个SqlDialectFactory的类供OrganizationDao使用,其实OrganizationDao本身充当了这个角色。模式的重点不在于它的标准实现,而是要灵活运用他的思想。

您认为从方案一到方案二的更改有一定道理,还是画蛇添足,甚至是弄巧成拙呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值