我想知道创建默认 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/