图片太小了 看不清 请看附件
我们先看下面的类图
这是一个常用的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操作
那么由此我们可以推出什么呢?这个例子能够得出什么结论呢?
凡是对底层的代码进行扩展都可以通过这种横向和纵向的方式来进行