`
163
  • 浏览: 24590 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

问题集锦之关于DAO接口设计的思考

阅读更多

需求: 现在要设计 3 个 DAO 分对 Wind, Horse, Cow 进行增、删、改以及一些其他操作。

设计一:

代码
  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. }   

<script>render_code();</script>

 

设计二:

 

代码
  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. Public interface WindDao extends BaseDao {   
  8.     public void other(Wind obj);   
  9. }   
  10.   
  11. Public interface HorseDao extends BaseDao {   
  12.     public void other(Horse obj);   
  13. }   
  14.   
  15. Public interface CowDao extends BaseDao {   
  16.     public void other(Horse obj);   
  17. }   

<script>render_code();</script>

 

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

各位大侠, 应该如何设计会比较合适些 ?

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

回答:

代码
  1. public interface BaseDao<t></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></wind> {   
  8.     public void other (Wind wind);   
  9. }   

 

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的.

反射虽然可以, 但是用反射性能比较低,我觉得如非必要最好还是不要用反射。

分享到:
评论

相关推荐

    趣味智力问题集锦.rar

    《趣味智力问题集锦》是一款以提升思维能力和增强智力为主题的电子书资源,主要包含一系列富有挑战性和趣味性的智力题目。这些题目旨在激发读者的逻辑思维、创新意识和问题解决能力,适合各年龄段的人群进行脑力锻炼...

    SWAT软件模型常见问题集锦

    SWAT软件模型常见问题集锦 SWAT是DRJeff为美国农业部农业服务中心开发的流域尺度模型。形成集空间信息处理、数据库技术、数学计算、可视化表达等功能于一身的大型专业软件。

    趣味C程序设计集锦.pdf

    《趣味C程序设计集锦》作为计算机C程序设计的科普读物与学习C语言程序设计的教学参考书,着眼于应用C程序设计求解问题的基本方法与技巧,提高通过C程序设计解决实际问题的能力。《趣味C程序设计集锦》以各类趣题的C...

    oracle常见问题集锦

    oracle常见问题集锦oracle常见问题集锦

    ROUTEROS问题集锦

    针对ros问题的电子书籍,希望能够帮助那些迫切希望学习ROS的网友。

    HFSS常见问题集锦

    HFSS常见问题集锦

    常用电源设计技巧图解+实用电源电路集锦+开关电源设计手册

    本资源包包含了三个核心部分:常用电源设计技巧图解、实用电源电路集锦和开关电源设计手册,为电源设计工程师提供了丰富的学习和参考材料。 1. 常用电源设计技巧图解: 这部分内容通常会涵盖电源设计的基本概念,如...

    趣味智力问题集锦

    智力问题可以涵盖数学、语言、逻辑、空间想象等多个领域,旨在通过解决这些问题来提升大脑的敏捷度和深度思考能力。 描述中的“[免费]没事玩玩,免得大脑秀逗了!^-^”强调了这是一个免费的资源,并且鼓励用户在...

    T6应用问题集锦

    T6应用问题集锦,主要关于T6企业管理,ERP,财务通等资源培训教程。

    Java常见问题集锦

    Java常见问题集锦,让每一个新手可以从java开发中快速找到开发中遇到的问题!

    ORACL易错问题集锦

    ORACL易错问题集锦

    matlab软件应用问题集锦

    【MATLAB软件应用问题集锦】 MATLAB是一款强大的数学计算软件,广泛应用于科学计算、工程设计、数据分析等领域。本问题集锦旨在汇总MATLAB在实际使用中遇到的各种问题及其解决方案,帮助用户提升效率,解决疑惑。 ...

    数据库各类问题宝典集锦

    数据库问题宝典集锦 数据库问题宝典集锦 数据库问题宝典集锦 数据库问题宝典集锦

    Cisco PIX 防火墙的问题集锦

    Cisco PIX 防火墙的问题集锦 Cisco PIX 防火墙的问题集锦

    趣味C程序设计集锦pdf

    趣味C程序设计集锦pdf

    VOIP系统常见问题集锦

    VOIP系统常见问题集锦 VOIP系统常见问题集锦 收藏 备用。

    昆仑通态触摸屏MCGS问题集锦.zip昆仑通态触摸屏案例编程资料PDF下载

    昆仑通态触摸屏MCGS问题集锦.zip昆仑通态触摸屏案例编程资料PDF下载昆仑通态触摸屏MCGS问题集锦.zip昆仑通态触摸屏案例编程资料PDF下载昆仑通态触摸屏MCGS问题集锦.zip昆仑通态触摸屏案例编程资料PDF下载昆仑通态...

    TouchPanel问题集锦

    TouchPanel问题集锦

    BCB 问题集锦

    本文档 是由本人及师兄弟共同努力下完成的。主要总结和归纳了在BCB编程过程中遇到的问题,详细列出了解决方案。包括BCB安装、与数据库的连接和使用、动态链接库的创建和调用等等。

Global site tag (gtag.js) - Google Analytics