java - 创建一个默认的 DAO 接口(interface)

标签 java dao

我想知道创建默认 DAO 接口(interface)而不是为每个类创建自己的接口(interface)是否是一个好习惯。

public interface DAO {

    public void addItem();
    public void updateItem();
    public void removeItem();
    public Object getItem(int id);
    public Object[] getAll();
}

现在我们可以通过多个类来实现这个接口(interface)。当然,这种解决方案有它的缺点,比如在检索数据期间向下转换,但我认为它仍然更高效且代码清晰。这是一个好方法吗?

最佳答案

这是一个好方法,但至少可以使用泛型进行改进:

public interface DAO<T> {
    public void addItem(T item);
    public void updateItem(T item);
    public void removeItem(T item);
    public T getItem(int id);
    public List<T> getAll();
}

所以现在你不需要任何转换。但无论如何,你必须确保所有的 DAO 至少有那些方法。否则,这将导致更多的复杂性。此外,如果有一些 DAO 恰好具有这些方法,您最终将得到非常紧凑的干净代码,例如:

public interface UserDAO extends DAO<User> {
    // And that is basically it :)
}

public class UserDAOImpl implements UserDAO {
    // Your implementations here
    // ...
}

注意:我已经替换了 Object[]List<T>而不是 T[]因为在泛型的情况下你不能这样做。但这不是缺点,最好使用内置容器。

关于java - 创建一个默认的 DAO 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854835/

相关文章:

java - 展平不均匀数组 - 越界异常错误

java - 检查参数化类型是否是特定类型实例

java - GWT 错误 : RequestFactory ValidationTool must be run

java - 不使用 ORM 实现实体类之间的关系

java - 如何使用 Mockito 测试我的 DAO 方法?

java - Recyclerview 更改了错误的项目

java - 改变 RadialGradient,渐变位置?

java - 将 DAO Autowiring 到服务中

Java高内存使用率

java - Spring 与 HSQLDB 最新 2.4.0 版本不工作