创建默认DAO界面

Jaq*_*uba 5 java dao

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

public interface DAO {

    public void addItem();
    public void updateItem();
    public void removeItem();
    public Object getItem(int id);
    public Object[] getAll();
}
Run Code Online (Sandbox Code Playgroud)

现在我们可以通过多个类实现这个接口.当然,这个解决方案有点像检索数据时的向下转换,但我认为它仍然更高效,代码清晰.这是一个好方法吗?

bag*_*rat 6

这是一种好方法,但使用泛型可以完成至少一项改进:

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();
}
Run Code Online (Sandbox Code Playgroud)

所以现在你不需要任何铸造.但无论如何,你必须确保所有的DAO至少都有这些方法.否则会导致更复杂的问题.此外,如果有一些DAO只具有这些方法,那么最终会得到非常紧凑的干净代码,例如:

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

public class UserDAOImpl implements UserDAO {
    // Your implementations here
    // ...
}
Run Code Online (Sandbox Code Playgroud)

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