Я собираюсь разработать слой DAO для моего приложения.Я сосредоточен на том, что Services просто вызывает 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)', поскольку хранилище данных может быть RDBMS, файловой системой, FTP и т. Д..
Как мне в общем случае создать свой слой Dao?
Если кто-то скажет «убрать getByQuery () из GenericSearchDao», то что мне делать в случае, когда мне нужны данные, специфичные для бизнеса?например, для пользователя с ролями, пользователя с продуктами и т. д.