周末用了一天时间浏览了一遍《设计模式解析》这本书,其中很多观念令人耳目一新,根据作者反复提到的两条原则:
- 找出变化并封装之。
- 优先使用对象聚集,而不是类继承。
我突发奇想,对以前产品中的Dao部分做个简单的修改,当然,目前只是一个简单的设想。下面是以前的设计类图:
修改后的类图如下:
- 其实第一种方案中也实现了“找出变化并封装之”的原则,但第二种方案中对变化的把握更细致更精确。
- 表面上看,类的继承层次和数量并没有减少,但站在Dao的角度来看,优先使用了聚集,继承层次变得简单了。“优先使用对象聚集,而不是类继承”,有时候能够减少继承层次,有时则仅仅把继承再次封装起来了,继承本身并没有什么不好,关键是使用它的方式。这正如在创建对象时使用了大量的if... else,我们也许会想到用一个工厂封装之,其实if...else并没有消失,只是跑到工厂对象里去了。
- 第二种方案中并没有创建一个SqlDialectFactory的类供OrganizationDao使用,其实OrganizationDao本身充当了这个角色。模式的重点不在于它的标准实现,而是要灵活运用他的思想。
您认为从方案一到方案二的更改有一定道理,还是画蛇添足,甚至是弄巧成拙呢?
分享到:
相关推荐
DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式
DAO设计模式 DAO 设计模式 JAVA设计模
重构 DAO tag java
dao层基类dao层基类dao层基类dao层基类dao层基类
李兴华DAO设计模式
使用数据访问对象(DAO,Data Access Object)模式来抽象和封装所有对数据源的访问。DAO管理着与数据源的连接以便检索和存储数据。可以降低商业逻辑层和数据访问层的耦合度,提高应用的可维护性和可移植性。 由于...
dao完成连接数据库修改删除...service层是面向功能的,一个个功能模块比如说银行登记并完成一次存款,UI要把请求给service层,然后service曾将这一个case分解成许多步骤调用底层的实现完成这次存款,dao就是下面那层。
本教程主要介绍了Dao设计模式,并且还有一些实例
java,dao设计模式,主要介绍Dao三层架构的设计模式,让我们更加深入理解Java 框架。
DAO设计模式
基于DAO设计模式的新闻发布系统基于DAO设计模式的新闻发布系统基于DAO设计模式的新闻发布系统基于DAO设计模式的新闻发布系统基于DAO设计模式的新闻发布系统
C#特性标签实现通用Dao层C#特性标签实现通用Dao层C#特性标签实现通用Dao层
暴露给客户端的DAO接口在低层数据源的实现发生改变时并不会随着改变,所以这种设计模式使得DAO可以适应不同的数据储存方式类型而不影响客户端和商业组件.最主要的, DAO还在组件和数据源之间扮演着协调者的角色. DAO...
用简单易懂的例子说明DAO设计模式(附带sql脚本,mysql数据库)
DAO设计模式是属于J2EE数据层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性。
DAO设计模式DAO设计模式,网上多份精华讲解汇总!
JAVA DAO模式解析
博客http://write.blog.csdn.net/postedit/47817289的辅助资料, 方便理解设计模式5——DAO,感兴趣朋友们,欢迎你下载。
如何重构DAO模式源文件
DAO重构