关于 DAO 接口设计的思考
2008-11-07 11:03
211 查看
需求: 现在要设计 3 个 DAO 分对 Wind, Horse, Cow 进行增、删、改以及一些其他操作。
设计一:
Java代码
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);
}
设计二:
Java代码
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的设计原则。
Java代码
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代码
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); }
设计二:
Java代码
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的设计原则。
Java代码
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);
}
相关文章推荐
- 关于 DAO 接口设计的思考
- 关于软件开发和模块接口设计之一些思考
- 关于接口设计的一些思考
- 前后端交互-一些关于接口设计的思考
- 关于如何做概要设计的思考
- 关于“JAVA中为什么没有了多继承并出现了接口”这一问题引发的一些思考
- C 关于二叉查找树的回顾,并简述结构接口设计
- 关于APP接口设计
- 关于优惠券后台设计思考
- 关于软件设计分层的一些思考
- 关于递归算法设计的思考
- 关于接口的设计
- 关于数据库设计中主键问题的思考
- 关于http接口防止非法调用的设计方案
- 多站点CMS系统设计进行时——关于缓存的思考
- 关于RESTful接口api的设计
- 关于 FPGA 和 外部芯片接口时序设计
- 关于角色权限管理的数据库设计引发的思考--表达不出来,说明还不是很了解(向高手提问)
- 关于多核的发展对网络游戏设计影响的一些思考
- J2EE中关于权限设计的思考