- 浏览: 180008 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (186)
- Ant (11)
- Axis2 (15)
- Car (9)
- Eclipse (1)
- Java (19)
- Java-EM (4)
- Javascript (11)
- Jsp (1)
- Hibernate (9)
- Mysql (1)
- Ms-Dos (5)
- Music (0)
- Oracle (3)
- Postgresql (0)
- Photoshop (1)
- Spring (17)
- Struts (8)
- Selenium (5)
- Ubuntu (13)
- News (17)
- Others (7)
- SSH (11)
- 算法 (5)
- FreeMarker (4)
- Tomcat (2)
- Linux (5)
最新评论
需求: 现在要设计 3 个 DAO 分对 Wind, Horse, Cow 进行增、删、改以及一些其他操作。
设计一:
设计二:
疑惑:
采用设计一: 发现增、删、改 这些方法重复了。
采用设计二: 发现 WindDao 不但可以对 Wind 进行增、删、改操作,
而且可以对其他任意对象进行增、删、改操作。似乎违反了OO的设计原则。
设计一:
- Public interface WindDao {
- public void create(Wind obj);
- public void delete(Wind obj);
- public void update(Wind obj);
- public void other(Wind obj);
- }
- Public interface HorseDao {
- public void create(Horse obj);
- public void delete(Horse obj);
- public void update(Horse obj);
- public void other(Horse obj);
- }
- Public interface CowDao {
- public void create(Cow obj);
- public void delete(Cow obj);
- public void update(Cow obj);
- public void other(Horse obj);
- }
Public interface WindDao { public void create(Wind obj); public void delete(Wind obj); public void update(Wind obj); public void other(Wind obj); } Public interface HorseDao { public void create(Horse obj); public void delete(Horse obj); public void update(Horse obj); public void other(Horse obj); } Public interface CowDao { public void create(Cow obj); public void delete(Cow obj); public void update(Cow obj); public void other(Horse obj); }
设计二:
- Public interface BaseDao {
- public void create(Object obj);
- public void delete(Object obj);
- public void update(Object obj);
- }
- Public interface WindDao extends BaseDao {
- public void other(Wind obj);
- }
- Public interface HorseDao extends BaseDao {
- public void other(Horse obj);
- }
- Public interface CowDao extends BaseDao {
- public void other(Horse obj);
- }
Public interface BaseDao { public void create(Object obj); public void delete(Object obj); public void update(Object obj); } Public interface WindDao extends BaseDao { public void other(Wind obj); } Public interface HorseDao extends BaseDao { public void other(Horse obj); } Public interface CowDao extends BaseDao { public void other(Horse obj); }
疑惑:
采用设计一: 发现增、删、改 这些方法重复了。
采用设计二: 发现 WindDao 不但可以对 Wind 进行增、删、改操作,
而且可以对其他任意对象进行增、删、改操作。似乎违反了OO的设计原则。
- public interface BaseDao<T> {
- public void create (T t);
- public void delete (T t);
- public void update (T t);
- }
- public interface WindDao extends BaseDao<Wind> {
- public void other (Wind wind);
- }
发表评论
-
JAVA中建立多线程的典型例子
2008-10-24 21:23 749JAVA中建立多线程,无非两种方式,一是继承自thread类 ... -
解决 Java 程序的乱码问题
2008-10-28 19:19 672早上来上班,同事问在本机好好的 Java 程序,放到服务器上运 ... -
编写对GC友好,又不泄漏的代码
2008-10-31 14:07 668编写对GC友好,又不泄 ... -
java实现给图片添加水印和文字
2008-10-31 18:49 781import java.io.*; import com.su ... -
当我调用 ProductService继承BaseService的方法时,提示我BaseDao属性null
2008-10-31 18:59 911转自:http://hi.baidu.com/annleecn ... -
Java实现分类文件拷贝1
2008-10-31 19:12 961在Java中对文件进行分类 如果你是个Java程序员,也许你 ... -
Java实现分类文件拷贝2
2008-10-31 19:13 693对于对老文件的修改,我 ... -
Java实现分类文件拷贝3
2008-10-31 19:14 698java.io.BufferedWriter; import ... -
Java实现分类文件拷贝4
2008-10-31 19:15 679tputStream fos=new FileOutputSt ... -
j2ee清除缓存的三句话
2008-10-31 19:19 514在ajax中经常会遇到一个问题,就是有重复请求的时候,ajax ... -
java中回调的实现
2008-10-31 19:22 646//定义一个接口 interface Incrementabl ... -
java实现快速排序算法
2008-10-31 19:23 653void paixu(int a[],int low,int ... -
java的窗口关闭问题
2008-10-31 19:24 967java的窗口关闭可以实现windowLinstener接口来 ... -
如何比较两个有可能为null的实例
2008-11-09 16:37 816如何比较两个有可能为null的实例 以前在写程序 ... -
Java 理论与实践: 嗨,我的线程到哪里去了?
2008-11-21 21:11 684Java 理论与实践: 嗨,我的 ... -
详细解析Java中抽象类和接口的区别
2008-11-26 20:39 679详细解析Java中抽象类 ... -
Java获取系统所有进程(转)
2009-02-06 12:36 927代码比较简单,就不那么讲究了。一个 main 写了吧。 im ... -
MD5加密 Java代码
2008-12-15 19:29 806因为代码太长,无法贴上来,所以传到了网盘上,可以下载 点击下 ...
相关推荐
- 实现类(如StudentDAOImpl):实现DAO接口,包含具体的数据操作方法。 - 数据层工厂类:创建DAO实例,实现DAO的实例化。 - 业务层实现类:调用DAO进行业务逻辑处理。 - 测试类:对整个系统进行单元测试和集成测试...
DAO接口和实现类如`ProductDAO`、`OrderDAO`会提供对数据库的操作方法,以实现对商品信息、用户信息、订单数据的存储和读取。 4. **数据库设计**: 在这个项目中,可能涉及到的数据库表有`Product`(产品)、`User...
Jdon附带的设计文档详细阐述了项目的架构设计、模块划分、接口设计以及关键类的功能说明。这些文档是理解源码的关键,可以帮助开发者快速定位和理解代码逻辑,同时也是项目管理和团队协作的重要参考。 1. **架构...
总的来说,这个JAVA简单学生管理系统项目不仅提供了实际的代码实现,还包含了完整的系统设计思考,对于学习JAVA编程、数据库操作以及软件工程实践具有很高的参考价值。通过这个项目,开发者可以深入理解JAVA后端开发...
项目中的"08"可能代表项目的第八个阶段或模块,可能包含数据库设计、接口设计、服务实现等部分。数据库设计通常包括商品表、订单表、用户表等,涉及主键、外键、索引等概念。接口设计则是定义Controller层对外提供的...
使用Hibernate工具生成实体类和对应的映射文件,编写DAO(Data Access Object)接口和实现类,实现对数据库的CRUD(Create, Read, Update, Delete)操作。 2.3 添加Spring应用 Spring作为依赖注入(DI)和面向切面...
2. **DAO(Data Access Object)层**:DAO接口和实现类负责与数据库的交互。它们封装了SQL查询和事务管理,提供了增删改查等操作,使得业务逻辑层与数据库操作解耦。 3. **Service层**:这是业务逻辑的实现,通常...
这种习惯不仅限于代码层面,还涵盖了问题分析、设计思考等多个方面,有助于培养更加严谨的思维模式。 ### 二、J2EE开发中的命名规范 #### 包命名规范 在J2EE项目中,包命名通常采用全小写的英文描述符,且以顶级...
通过阅读论文,我们可以更深入理解系统设计背后的思考和优化策略。 总的来说,这个项目是一个完整的移动互联网信息查询与发布解决方案,它结合了Java的强大后端处理能力和WML的轻量级无线界面设计,为移动设备用户...
- 后端逻辑处理则涉及Java类的设计与实现,包括业务逻辑处理和服务接口的定义。 - 数据库交互方面,使用JDBC(Java Database Connectivity)进行数据库连接和数据操作。 - **4.6 测试结果** - **登录测试**:...
标签中提到了“毕业设计”,这可能表示这是一个由学生作为毕业项目完成的作品,通常会涵盖全面的技术实现和设计思考,以便展示其在软件工程领域的技能和理解。 “微信小程序”标签明确了该项目是针对微信平台的小型...
Java设计与源代码是软件开发领域中的核心主题,它涵盖了编程基础、面向对象设计原则、设计模式、软件架构以及实际项目中的源代码实现。在这个专题中,我们将深入探讨Java编程语言的设计理念,以及如何通过高质量的源...
这样的线性流程有着极大的问题,首先架构师或数据库专家不是圣人,设计数据库,Dao,Service接口之后,就不需要修改,在编码过程中,会进行大量的修改,特别是那种那只懂数据库的专家在设计之后,开发人员怨声载道。...
在这个商城系统中,用户信息、商品信息、订单等都会存储在数据库中,JDBC提供了与数据库交互的接口。 4. **MVC(Model-View-Controller)模式**:这是一种常见的软件设计模式,用于分离业务逻辑、数据模型和用户...
而“代码”文件夹则包含了实际的Java源代码,包括实体类、DAO接口及其实现、Service接口及其实现、Action类等,这些代码可以帮助学习者深入理解SSH框架在实际项目中的应用。 通过学习和研究这个CRM系统,你可以掌握...
项目中的答辩PPT和源代码中可能包含了Spring MVC的Controller、Service、DAO等层的设计与实现。 3. **MyBatis**:MyBatis是一个持久层框架,它提供了方便的SQL编写和映射功能,避免了几乎所有的JDBC代码和手动设置...
MVC(Model-View-Controller)是一种软件设计模式,广泛应用于Web应用程序开发。它将业务逻辑(Model)、用户界面(View)和控制逻辑(Controller)分离,使代码结构更清晰,易于维护。 1. **Service层**:这部分...