需求: 现在要设计 3 个 DAO 分对 Wind, Horse, Cow 进行增、删、改以及一些其他操作。
设计一:
代码
- 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);
- }
<script>render_code();</script>
设计二:
代码
- 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);
- }
<script>render_code();</script>
疑惑:
采用设计一: 发现增、删、改 这些方法重复了。
采用设计二: 发现 WindDao 不但可以对 Wind 进行增、删、改操作,
而且可以对其他任意对象进行增、删、改操作。似乎违反了OO的设计原则。
各位大侠, 应该如何设计会比较合适些 ?
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
回答:
代码
- public interface BaseDao<t></t> {
- public void create (T t);
- public void delete (T t);
- public void update (T t);
- }
-
- public interface WindDao extends BaseDao<wind></wind> {
- public void other (Wind wind);
- }
public interface BaseDao<t></t> {
public void create (T t);
public void delete (T t);
public void update (T t);
}
public interface WindDao extends BaseDao<wind></wind> {
public void other (Wind wind);
} 我也喜欢这种方式
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
反射的话应该也可以,不是这种类型的就抛个异常出来,不过这样的话,每个DAO实现都要重复判断,所以最好写一个基类把这些东西放在基类里面,to楼上的几位,不是什么项目都可以用5.0的.
反射虽然可以, 但是用反射性能比较低,我觉得如非必要最好还是不要用反射。
分享到:
相关推荐
《趣味智力问题集锦》作为一款电子书资源,以其独特的形式和丰富的内容,成为了现代人脑力锻炼的一个新选择。它不仅是一本为智力成长提供营养的食粮,更是一种在轻松愉悦中提升思维能力的新方式。 《趣味智力问题...
SWAT软件模型常见问题集锦 SWAT是DRJeff为美国农业部农业服务中心开发的流域尺度模型。形成集空间信息处理、数据库技术、数学计算、可视化表达等功能于一身的大型专业软件。
考虑到“趣味智力问题集锦”是由一个可执行文件组成,即“趣味智力问题集锦.exe”,我们可以推断它可能是一个专门设计的应用程序,允许用户通过电子设备轻松地访问这些智力题目。这样的设计特别适合现代人利用碎片化...
《趣味C程序设计集锦》作为计算机C程序设计的科普读物与学习C语言程序设计的教学参考书,着眼于应用C程序设计求解问题的基本方法与技巧,提高通过C程序设计解决实际问题的能力。《趣味C程序设计集锦》以各类趣题的C...
oracle常见问题集锦oracle常见问题集锦
针对ros问题的电子书籍,希望能够帮助那些迫切希望学习ROS的网友。
HFSS常见问题集锦
在电子工程领域中,电源设计一直是技术发展的基石之一。随着电子设备功能的多样化和对性能要求的提高,对电源的需求也日渐苛刻。为了满足这些需求,电源设计工程师需要掌握大量的理论知识与实践技巧,而本资源包——...
T6应用问题集锦,主要关于T6企业管理,ERP,财务通等资源培训教程。
NIOS II 问题集锦 NIOS II 是 Altera 公司开发的一种基于 FPGA 的 softcore 处理器,广泛应用于嵌入式系统和数字系统设计中。下面是 NIOS II 问题集锦,旨在帮助开发者快速解决常见问题。 一、SDRAM 设置错误 在 ...
Java常见问题集锦,让每一个新手可以从java开发中快速找到开发中遇到的问题!
ORACL易错问题集锦
【MATLAB软件应用问题集锦】 MATLAB是一款强大的数学计算软件,广泛应用于科学计算、工程设计、数据分析等领域。本问题集锦旨在汇总MATLAB在实际使用中遇到的各种问题及其解决方案,帮助用户提升效率,解决疑惑。 ...
数据库问题宝典集锦 数据库问题宝典集锦 数据库问题宝典集锦 数据库问题宝典集锦
Cisco PIX 防火墙的问题集锦 Cisco PIX 防火墙的问题集锦
趣味C程序设计集锦pdf
VOIP系统常见问题集锦 VOIP系统常见问题集锦 收藏 备用。
昆仑通态触摸屏MCGS问题集锦.zip昆仑通态触摸屏案例编程资料PDF下载昆仑通态触摸屏MCGS问题集锦.zip昆仑通态触摸屏案例编程资料PDF下载昆仑通态触摸屏MCGS问题集锦.zip昆仑通态触摸屏案例编程资料PDF下载昆仑通态...
TouchPanel问题集锦
本文档 是由本人及师兄弟共同努力下完成的。主要总结和归纳了在BCB编程过程中遇到的问题,详细列出了解决方案。包括BCB安装、与数据库的连接和使用、动态链接库的创建和调用等等。