Я создаю приложение, имеющее уровень бизнес-логики, которому необходимо получить доступ к уровню DAO для всех связанных с БД. Мое требование таково, что класс DAOImpl может продолжать меняться, поэтому я ищу способы, с помощью которых я могу получить дескриптор класса DAOImpl в своем классе бизнес-логики без необходимости знать фактический класс DAOImpl. Есть ли способ достичь этого на Java?java скрывает реализацию данных класса между двумя слоями
ответ
DAOImpl
класс должен реализовать интерфейс DAOLayer
(скажем). Класс businessLogic должен состоять из объекта DAOLayer
.
class BusinessLogic
{
/// ...
DAOLayer daoLayer;
public BusinessLogic(DAOLayer daoLayer)
{
this.daoLayer = daoLayer;
}
/// ...
}
class DAOImpl implements DAOLayer
{
/// ...
}
Вы должны пройти фактическую реализацию DAOLayer
при создании BusinessLogic
объекта класса.
Аналогично следующее:
DAOLayer aDaoLayer = new DAOImpl();
BusinessLogic bl = new BusinessLogic(aDaoLayer);
ИЛИ
public BusinessLogic()
{
this.daoLayer = DAOFactory.create(true);
}
class DAOFactory
{
public static DAOLayer create(bool isDB)
{
DAOLayer aDao;
if(isDB)
{
aDao = // create for DB
}
else
{
aDao = // create for file
}
return aDao;
}
}
Я получил это, но как конструктор BusinessLogic получит дескриптор объекта DAOImpl. Мне нужно было бы добавить что-то вроде: this.daoLayer = new DAOImpl(); Это будет иметь особое значение для текущей реализации DAOImpl. – user2185805
см. Правки. Внутри 'BusinessLogic' объекты DAO не должны создаваться. ИЛИ вы также можете использовать заводской шаблон. – Azodious
звук, как будто вы хотите использовать interface, это базовый метод развязки java от желаемого поведения.
Ваша логика логистики должна определенно обрабатывать только DAO interfaces, что скроет фактическое перемещение.
Чтобы иметь возможность быстро изменить реализующие классы, посмотрите на контейнеры IoC, такие как Spring
- 1. Почему Java скрывает реализацию getLocalHostName()?
- 2. Листовка: смесь между двумя базовыми слоями
- 3. Как разделить реализацию интерфейса между двумя классами
- 4. Touch обработано двумя слоями
- 5. Преобразование типов между слоями данных и бизнеса
- 6. JAVA - Получить общую реализацию класса
- 7. Обнаружение столкновений между слоями
- 8. r - ggplot2 - создать затененную область между двумя слоями geom_abline
- 9. R: вычисление кратчайшего расстояния между двумя точечными слоями
- 10. Лучший способ передачи данных между слоями
- 11. Cocos2d-x получение данных между слоями
- 12. Транзакция между несколькими слоями DAO?
- 13. Cocos2D - Общение между слоями
- 14. Название столкновения между слоями
- 15. Копирование моделей между слоями
- 16. Multi-Texturing - Интерполяция между двумя слоями 3D-текстуры
- 17. Scapy - вставить слой пакета между двумя другими слоями
- 18. Как обмениваться данными между двумя слоями в cocos2d-x?
- 19. Вставьте слой размытия между двумя существующими слоями представления
- 20. Синхронизирующие значения валидации между слоями
- 21. Локальная декларация «" скрывает экземпляр и неполную реализацию
- 22. Разница между слоями и трубами и фильтрами?
- 23. Передача бинов между разными слоями
- 24. Передача данных Java между двумя классами
- 25. Можно ли переопределить реализацию Java класса Random?
- 26. Соедините геомаркеры с двумя слоями данных с линиями
- 27. Как остановить смешение между слоями?
- 28. CartoDB: Переключение кнопок между слоями
- 29. Konva Продвигайте события между слоями
- 30. Настройка инверсии зависимостей между слоями
Просто, чтобы добавить к этому вопросу, в любой данный момент времени, там будет только один класс DAOImpl, который будет использоваться. – user2185805