java - 了解 DAO 模式和接口(interface)

标签 java interface dao

我正在阅读 J。 Bloch 的 effective Java 他说了以下内容:

Once an interface is released and widely implemented, it is almost impossible to change.

那么,现在考虑 DAO-pattern 的简单接口(interface):

public interface UserDao{

    public User getById(int id);

    public Collection<User> getAll();

    public boolean delete(int userId);

    public boolean update(User u);

}

这就是我的 Dao 界面首次发布时的样子。到那时,我不得不向用户添加一些功能,以便通过其 registration_date 或类似的东西聚合所有用户。因此,我需要在 DAO 接口(interface)中添加相应的方法声明并实现它。

此外,目前我无法想象 DAO 接口(interface)可能或多或少是稳定的,因为添加一些新的 DAO 操作经常发生。

也许这是我的 DAO 设计灾难,或者接口(interface)几乎不适合 DAO

最佳答案

我认为 J. Bloch 的那句话是针对公共(public)接口(interface)的,而不是针对您的 DAO 案例。

想想你创建一个公共(public) API 让任何程序员使用你的平台。如果您要更改该界面,则需要程序员调整他的代码,因此这会令人沮丧。

但是,如果您是为内部应用程序创建界面,则无需承担该风险,值得根据需要改进界面。

显然,您必须考虑有多少类实现了您的接口(interface)并承担修改成本。

关于java - 了解 DAO 模式和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33364306/

相关文章:

c# - 通过 IKVM 在 C# 中用于 OIM 的 Java interface.class

java - @Transactional 注解属于哪里?

java - EntityManager 和 DAO 有什么区别?

官方文档中的Java注解示例

ruby - 如何找到 "essential"方法来提供 Ruby mixins 的接口(interface)?

java - 问题!实体数据未使用数据访问对象 (dao) 和 JPA 获取?

java - 在 Java 中使用 SQL 语句插入数字数据类型

java - 拼图解题方法

java - 如何使用 iText 以外的其他内容从模板 PDF 生成 PDF 输出?

Java解析XML文档给出 “Content not allowed in prolog”错误