问题描述
- 关于java中Dao模块接口问题,请教一下原理
-
BaseDao.java
public interface BaseDao {}BaseDaoImpl.java
public abstract class BaseDaoImpl implements BaseDao {}UserService.java
public interface UserService extends BaseDao{}UserServiceImpl.java
public class UserServiceImpl extends BaseDaoImpl implements UserService {} //User就不粘出来了我想问下,为什么UserService这个接口还要继承一下BaseDao接口?UserServiceImpl不是继承了BaseDaoImpl了嘛,基础操作都有了。不继承也没有什么影响呀? 请知道的大神给说下原理。
解决方案
首先BaseDao抽象的是所有共有的操作,UserService抽象的是用户操作相关方法,对应的实现类也有相同的继承体系 UserServiceImpl继承BaseDaoImpl,这是设计模式的一种,好像是bridge模式;此外从面相解决编程的角度, UserService继承 BaseDao的话,那么 UserServiceImpl这个类实例也是 BaseDao类型,注入 BaseDao类型时可以使用 UserServiceImpl。
解决方案二:
一般都是在service里面直接注入dao就行了的、这个写法有点怪
解决方案三:
可能这个service是虚拟类、要实现未实现的方法
解决方案四:
感谢回答,但是感觉楼上回答的不是太合理。这种代码风格一般在视频和老师那里看到的。
时间: 2024-10-31 11:31:29