我想知道创建默认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)
现在我们可以通过多个类实现这个接口.当然,这个解决方案有点像检索数据时的向下转换,但我认为它仍然更高效,代码清晰.这是一个好方法吗?
这是一种好方法,但使用泛型可以完成至少一项改进:
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[]因为在泛型的情况下你不能这样做.但这不是缺点,最好使用内置容器.
| 归档时间: |
|
| 查看次数: |
436 次 |
| 最近记录: |