我将为我的应用程序设计一个DAO层。我的重点是,服务只调用独立于底层实现的DAO。
public interface GenericSearchDao{
List getAll();
List getByQuery(String query);
}
public class UserJdbcSearch implements GenericSearchDao{
public List getAll(){
// Get all users;
}
List getByQuery(String query){
// Get users by query;
}
}
public class UserFileSystemSearch implements GenericSearchDao{
public List getAll(){
// Get all users from file system;
}
List getByQuery(String query){
// Get users by query[this leads to invalid operation];
}
}
public userService {
private GenericSearchDao dao = new UserFileSystemSearch();
public List getUsers(){
rturn dao.getAll();
}
public List getByQuery(String query){
return dao.getByQuery(query);
}
}
需要帮助:
我应该怎样摆脱“getByQuery(query)”的特定实现,因为数据存储可以是关系型数据库、文件系统、FTP等。
我应该如何通用地设计我的 Dao 层?
如果有人说“从 GenericSearchDao 中删除 getByQuery()”,那么在我需要业务操作特定数据的情况下,例如:带有角色的用户、带有产品的用户等,我该怎么办?
Stirng
. - BalusC