了解DAO模式和接口

St.*_*rio 5 java dao interface

我正在阅读J. Bloch有效的Java,他说以下内容:

一旦界面发布并广泛实施,几乎不可能改变.

所以,现在考虑DAO模式的简单接口:

public interface UserDao{

    public User getById(int id);

    public Collection<User> getAll();

    public boolean delete(int userId);

    public boolean update(User u);

}
Run Code Online (Sandbox Code Playgroud)

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

此外,我现在无法想象 - 接口DAO可能或多或少是稳定的,因为添加一些新的DAO操作经常发生.

也许这是我的DAO设计灾难,或者界面几乎不适合DAOs?

mal*_*una 6

我认为J. Bloch的句子是针对公共接口的,而不是针对你的DAO案例.

想想你创建一个公共API,让任何程序员都使用你的平台.如果要更改该接口,则需要程序员调整其代码,因此这将令人沮丧.

但是,如果您要为内部应用程序创建界面,则不会承担风险,并且可以根据需要改进界面.

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

  • *我认为J. Bloch的句子是针对公共接口的.*同意.项目中的内部接口始终在变化. (2认同)