关于 DAO 接口设计的思考

需求: 现在要设计 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. }
posted @ 2008-11-07 11:03  Earl_86  阅读(238)  评论(0编辑  收藏  举报