|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-09-06 关键字: dao service
图片太小了 看不清 请看附件 我们先看下面的类图 这是一个常用的dao层设计: DAO (interface) UserDAO extends DAO (interface) BaseDAOHibernate implements DAO UserDaoHibernate extends BaseDAOHibernate implements UserDao 采用这样的设计是为了提高代码的复用,在本例中就是基本的CRUD方法的复用 我们分析一下代码是怎么样被复用的 我们看一下中间的两个class :UserDao 和 BaseDaoHibernate 他们跟DAO接口都有直接的关系 一个是继承 一个是实现,换句话说他们都对DAO进行了扩展,UserDao是横向(接口)的扩展,BaseDAOHiberate是纵向的扩展,横向和纵向都扩展了之后要怎样合二为一呢?这个问题由UserDAOHibernat来解决了 通过看上面的图可以看出UserDAO 和 BaseDAOHibernat是作为一个中间层存在的,最终目的是让UserDAOHibernate拥有DAO接口的CRUD操作。 我们再来看下面这个图,是不是跟上图有着惊人的相似 其实仔细看一下这两个图完全的一样,目的也是复用CRUD操作
那么由此我们可以推出什么呢?这个例子能够得出什么结论呢? 凡是对底层的代码进行扩展都可以通过这种横向和纵向的方式来进行 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2007-09-06
引用 凡是对底层的代码进行扩展都可以通过这种横向和纵向的方式来进行
这个部分的扩展? BaseDAOHibernate implements DAO? 如果这个算纵向? 横向是.....? |
|
| 返回顶楼 | |
|
时间:2007-09-06
huangpengxiao 写道 引用 凡是对底层的代码进行扩展都可以通过这种横向和纵向的方式来进行
这个部分的扩展? BaseDAOHibernate implements DAO? 如果这个算纵向? 横向是.....? 横向是UserDao 对接口进行扩展 |
|
| 返回顶楼 | |
|
时间:2007-09-26
有点模糊,结合点小实例看看
我看好多范型DAO也都是这样设计的 |
|
| 返回顶楼 | |
|
时间:2007-09-26
应该是Dao/BaseDAOHibernate是对所有对象crud的操作都能工作的,其中crud某些方法的参数会包括Class cls. UserDao/UserDaoHibernate是专门针对user类的,这个的crud是不需要传入Class的,比如直接给id或者条件就好,不需要User.class,这样的封装对于使用UserDao的代码会好些
Dao可能的方法 public T findById(Class<T> cls,Long id) 对应的UserDao的方法 public User findById(Long userId) |
|
| 返回顶楼 | |
|
时间:2007-09-30
请的不够清楚
|
|
| 返回顶楼 | |
|
时间:2007-09-30
纵向是实现方式上的扩展,比如采用多种方式实现;横向是功能上的扩展,继承多个接口实现扩展。
|
|
| 返回顶楼 | |
|
时间:2007-09-30
不错,UserDao是接口扩展,BaseDAOHibernate是抽象类扩展。
|
|
| 返回顶楼 | |
|
时间:2007-10-04
我的做法是首先让Entity全部都实现一个空接口 Entityable
然后定义基Dao接口 public interface BaseDao<T extends Entityable> { T find(Object primaryKey); void create(T t); void modify(T t); void delete(T t); } 然后其他子接口一律继承BaseDao<T> public interface AccountDao extends BaseDao<Account> { } 实现的时候BaseDao用BaseDaoImpl去实现 而AccountDao则用AccountDaoImpl extends BaseDaoImpl implements AccountDao去实现 不知道这样的做法是否合理呢~ |
|
| 返回顶楼 | |
|
时间:2007-10-10
把基本操作泛化就可以了,ibm developers上好像是03 04的文章
|
|
| 返回顶楼 | |










