周末用了一天时间浏览了一遍《设计模式解析》这本书,其中很多观念令人耳目一新,根据作者反复提到的两条原则:
- 找出变化并封装之。
- 优先使用对象聚集,而不是类继承。
我突发奇想,对以前产品中的Dao部分做个简单的修改,当然,目前只是一个简单的设想。下面是以前的设计类图:
修改后的类图如下:
- 其实第一种方案中也实现了“找出变化并封装之”的原则,但第二种方案中对变化的把握更细致更精确。
- 表面上看,类的继承层次和数量并没有减少,但站在Dao的角度来看,优先使用了聚集,继承层次变得简单了。“优先使用对象聚集,而不是类继承”,有时候能够减少继承层次,有时则仅仅把继承再次封装起来了,继承本身并没有什么不好,关键是使用它的方式。这正如在创建对象时使用了大量的if... else,我们也许会想到用一个工厂封装之,其实if...else并没有消失,只是跑到工厂对象里去了。
- 第二种方案中并没有创建一个SqlDialectFactory的类供OrganizationDao使用,其实OrganizationDao本身充当了这个角色。模式的重点不在于它的标准实现,而是要灵活运用他的思想。
您认为从方案一到方案二的更改有一定道理,还是画蛇添足,甚至是弄巧成拙呢?
分享到:
相关推荐
1. **MVC设计模式**:在SpringMVC中,Model代表业务对象和数据,View负责数据的展示,Controller处理用户请求并协调Model和View。通过这种方式,我们可以将系统分解为独立的组件,便于管理和扩展。 2. **...
1. **DAO(Data Access Object)**:DAO是软件设计模式之一,用于封装对数据库的操作,使得业务逻辑与数据访问逻辑分离。在这个项目中,DAO层的代码可能包括了添加、删除、查询和更新生词本中的单词及其相关信息的...
DAO模式是一种设计模式,用于隔离业务逻辑层和数据访问层,使得业务逻辑层不受底层数据存储方式的影响。在"spring3.1+hibernate4+jpa框架集成Dao部分"中,DAO层通常是: 1. **泛型设计**:使用泛型可以创建更通用的...
SSH框架是Java开发中非常经典的一种框架组合,它由Spring、Struts和Hibernate三个框架组成,分别对应业务层、表现层和持久层,提供了一种高效的Java Web应用开发模式。下面我们详细解析SSH框架中的关键知识点。 ###...
在软件设计领域,设计模式是经过时间和实践验证的解决方案,它们是解决常见问题的最佳实践。设计模式六大原则是面向对象编程中的基石,为代码的可维护性、扩展性和复用性提供了指导。本文将深入探讨这六大原则中的第...
本文将深入解析PetShop4.0的源代码,帮助读者掌握其背后的开发技术和设计模式。 PetShop4.0是基于.NET Framework 1.1开发的,展示了如何利用ASP.NET、ADO.NET以及XML Web Services构建一个完整的电子商务系统。该...
数据库重构类似于代码重构,是对数据库模式的调整,使得扩展和维护变得更简单。在软件开发过程中,数据库重构是演进式数据库设计的关键部分,需要与代码重构、数据建模等活动协同进行。高耦合的系统更难以重构,因此...
5. **DAO层**:DAO(Data Access Object)层是数据访问层,它的主要任务是封装对数据库的操作,如SQL查询。DAO层通过Hibernate提供的API与数据库交互,执行数据的增删改查。DAO层的存在使得业务逻辑层与数据库操作...
9. **不使用设计模式**:设计模式是解决常见问题的最佳实践,不使用它们可能导致代码质量下降。 10. **数据库直连**:直接在代码中写SQL语句,而非通过DAO(Data Access Object)或ORM框架,可能导致SQL注入风险和...
【MyBlog简单博客备份】是基于MVC设计模式,利用Servlet和MySQL数据库技术开发的一款小型博客系统。在软件工程中,MVC(Model-View-Controller)是一种广泛应用于Web应用程序的架构模式,它将应用程序分为三个核心...
这个企业网站源码采用三层架构设计,这种设计模式在大型项目中被广泛应用,具有良好的可维护性和可扩展性。 一、三层架构详解 1. 表现层(Presentation Layer):这一层主要负责用户界面的展示,包括HTML页面、...
- **缺乏统一的设计模式**:没有采用合适的设计模式或框架,使得类似功能的实现方式多种多样。 - **时间压力下的妥协**:面对紧迫的项目截止日期,团队可能会采取最快的方式来解决问题,即使这意味着引入重复代码...
DAO模型是软件设计模式中的一种,主要用于数据库操作。在Java中,DAO层负责与数据库进行交互,它封装了SQL查询,使得业务逻辑层与数据存储层解耦。在个人博客项目中,你将创建DAO类,如UserDAO、ArticleDAO等,它们...
源码分析可以帮助我们了解系统的架构设计,如MVC模式的运用,以及如何通过DAO(数据访问对象)层、Service层和Controller层来实现业务逻辑。此外,还能看到如何使用Spring框架进行依赖注入,以及可能采用的MyBatis或...
数据访问对象(DAO)模式是一种设计模式,用于封装对数据库的访问。在这里,"Command Beans"可能表示实现了特定业务逻辑的EJBs,它们负责调用DAOs来执行数据库操作。这种方式有助于保持业务逻辑与数据访问的分离。 ...
在Java开发中,DAO(Data Access Object)模式是一种常见的设计模式,用于封装对数据库的操作,使得业务逻辑层与数据访问层解耦。 “工具”则可能是指开发者创建的实用程序,比如自动化脚本、数据处理工具、性能...
JUnit和Mockito可以帮助我们对服务层和DAO层进行单元测试,而Spring Test MVC则能方便地进行Web层的集成测试。 8. **优化与性能**:为了提高SSM项目的性能,我们可以考虑缓存机制(如使用Spring Cache或Redis)、...
- **三层架构**:包括表现层(Web层)、业务逻辑层(Service层)和数据访问层(DAO层),有利于系统的解耦和重构。 - **智能引擎**:通过参数化配置而非编码实现大部分业务逻辑,降低开发复杂度和成本。 #### 三、...
2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发...
2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发...