`

关于 DAO 接口设计的思考

    博客分类:
  • Java
阅读更多
需求: 现在要设计 3 个 DAO 分对 Wind, Horse, Cow 进行增、删、改以及一些其他操作。

设计一:
Java代码 复制代码
  1. Public interface WindDao {  
  2.     public void create(Wind obj);  
  3.     public void delete(Wind obj);  
  4.     public void update(Wind obj);  
  5.   
  6.     public void other(Wind obj);  
  7. }  
  8.   
  9. Public interface HorseDao {  
  10.     public void create(Horse obj);  
  11.     public void delete(Horse obj);  
  12.     public void update(Horse obj);  
  13.   
  14.     public void other(Horse obj);  
  15. }  
  16.   
  17. Public interface CowDao {  
  18.     public void create(Cow obj);  
  19.     public void delete(Cow obj);  
  20.     public void update(Cow obj);  
  21.   
  22.     public void other(Horse obj);  
  23. }  


设计二:

Java代码 复制代码
  1. Public interface BaseDao {  
  2.     public void create(Object obj);  
  3.     public void delete(Object obj);  
  4.     public void update(Object obj);  
  5. }  
  6.   
  7.   
  8. Public interface WindDao extends BaseDao {  
  9.     public void other(Wind obj);  
  10. }  
  11.   
  12. Public interface HorseDao extends BaseDao {  
  13.     public void other(Horse obj);  
  14. }  
  15.   
  16. Public interface CowDao extends BaseDao {  
  17.     public void other(Horse obj);  
  18. }  


疑惑:
    采用设计一: 发现增、删、改 这些方法重复了。
    采用设计二: 发现 WindDao 不但可以对 Wind 进行增、删、改操作,
                 而且可以对其他任意对象进行增、删、改操作。似乎违反了OO的设计原则。

Java代码 复制代码
  1. public interface BaseDao<T> {  
  2.     public void create (T t);  
  3.     public void delete (T t);  
  4.     public void update (T t);  
  5. }  
  6.   
  7. public interface WindDao extends BaseDao<Wind> {  
  8.     public void other (Wind wind);  
  9. }
分享到:
评论

相关推荐

    ajva课程设计报告javadao模式设计.doc

    - 实现类(如StudentDAOImpl):实现DAO接口,包含具体的数据操作方法。 - 数据层工厂类:创建DAO实例,实现DAO的实例化。 - 业务层实现类:调用DAO进行业务逻辑处理。 - 测试类:对整个系统进行单元测试和集成测试...

    Java练习项目: web,service,dao的无框架练习项目

    DAO接口和实现类如`ProductDAO`、`OrderDAO`会提供对数据库的操作方法,以实现对商品信息、用户信息、订单数据的存储和读取。 4. **数据库设计**: 在这个项目中,可能涉及到的数据库表有`Product`(产品)、`User...

    jdon完整源码及设计文档

    Jdon附带的设计文档详细阐述了项目的架构设计、模块划分、接口设计以及关键类的功能说明。这些文档是理解源码的关键,可以帮助开发者快速定位和理解代码逻辑,同时也是项目管理和团队协作的重要参考。 1. **架构...

    JAVA简单学生管理系统完整版+设计报告

    总的来说,这个JAVA简单学生管理系统项目不仅提供了实际的代码实现,还包含了完整的系统设计思考,对于学习JAVA编程、数据库操作以及软件工程实践具有很高的参考价值。通过这个项目,开发者可以深入理解JAVA后端开发...

    ssm框架实战项目——超市订单管理系统

    项目中的"08"可能代表项目的第八个阶段或模块,可能包含数据库设计、接口设计、服务实现等部分。数据库设计通常包括商品表、订单表、用户表等,涉及主键、外键、索引等概念。接口设计则是定义Controller层对外提供的...

    《JavaEE》课程设计报告

    使用Hibernate工具生成实体类和对应的映射文件,编写DAO(Data Access Object)接口和实现类,实现对数据库的CRUD(Create, Read, Update, Delete)操作。 2.3 添加Spring应用 Spring作为依赖注入(DI)和面向切面...

    Java +SQL做的项目代码

    2. **DAO(Data Access Object)层**:DAO接口和实现类负责与数据库的交互。它们封装了SQL查询和事务管理,提供了增删改查等操作,使得业务逻辑层与数据库操作解耦。 3. **Service层**:这是业务逻辑的实现,通常...

    开发编码规范.doc

    这种习惯不仅限于代码层面,还涵盖了问题分析、设计思考等多个方面,有助于培养更加严谨的思维模式。 ### 二、J2EE开发中的命名规范 #### 包命名规范 在J2EE项目中,包命名通常采用全小写的英文描述符,且以顶级...

    JAVAWML信息查询与后端信息发布系统实现——WML信息查询设计(源代码+论文).zip

    通过阅读论文,我们可以更深入理解系统设计背后的思考和优化策略。 总的来说,这个项目是一个完整的移动互联网信息查询与发布解决方案,它结合了Java的强大后端处理能力和WML的轻量级无线界面设计,为移动设备用户...

    javaEE-学生课程设计成绩评估系统.doc

    - 后端逻辑处理则涉及Java类的设计与实现,包括业务逻辑处理和服务接口的定义。 - 数据库交互方面,使用JDBC(Java Database Connectivity)进行数据库连接和数据操作。 - **4.6 测试结果** - **登录测试**:...

    学生购电微信小程序.zip

    标签中提到了“毕业设计”,这可能表示这是一个由学生作为毕业项目完成的作品,通常会涵盖全面的技术实现和设计思考,以便展示其在软件工程领域的技能和理解。 “微信小程序”标签明确了该项目是针对微信平台的小型...

    java设计及源代码

    Java设计与源代码是软件开发领域中的核心主题,它涵盖了编程基础、面向对象设计原则、设计模式、软件架构以及实际项目中的源代码实现。在这个专题中,我们将深入探讨Java编程语言的设计理念,以及如何通过高质量的源...

    代码生成器Mgicode生成器JAVA代码生成器

    这样的线性流程有着极大的问题,首先架构师或数据库专家不是圣人,设计数据库,Dao,Service接口之后,就不需要修改,在编码过程中,会进行大量的修改,特别是那种那只懂数据库的专家在设计之后,开发人员怨声载道。...

    JavaWeb 商城项目(毕业设计)

    在这个商城系统中,用户信息、商品信息、订单等都会存储在数据库中,JDBC提供了与数据库交互的接口。 4. **MVC(Model-View-Controller)模式**:这是一种常见的软件设计模式,用于分离业务逻辑、数据模型和用户...

    客户关系管理系统

    而“代码”文件夹则包含了实际的Java源代码,包括实体类、DAO接口及其实现、Service接口及其实现、Action类等,这些代码可以帮助学习者深入理解SSH框架在实际项目中的应用。 通过学习和研究这个CRM系统,你可以掌握...

    基于ssm的毕业设计,租赁中心,毕设+答辩ppt+开题报告

    项目中的答辩PPT和源代码中可能包含了Spring MVC的Controller、Service、DAO等层的设计与实现。 3. **MyBatis**:MyBatis是一个持久层框架,它提供了方便的SQL编写和映射功能,避免了几乎所有的JDBC代码和手动设置...

    code_java_自动代码生成_

    MVC(Model-View-Controller)是一种软件设计模式,广泛应用于Web应用程序开发。它将业务逻辑(Model)、用户界面(View)和控制逻辑(Controller)分离,使代码结构更清晰,易于维护。 1. **Service层**:这部分...

Global site tag (gtag.js) - Google Analytics