Я читал почти все вопросы здесь и много связанных аргументов в www, но все же я не уверен, что хорошо понимаю суть, и, вероятно, я пропущу что-то, что очевидно для всех, поскольку я думаю, что это вполне общая ситуация ...Где должна находиться логика для сборки объекта домена из DAO?
Пожалуйста, простите мой ужасный английский и перепутанную терминологию, но меня не интересуют различия/преимущества/оговорки DAO vs Repository, я думаю, что это не меняет «ядро», вопроса, но, возможно, я ошибаюсь.
Очевидно, что пример слишком прост, и каждое решение легко перегоняет, но подумайте об этом как о «корпусе» для гораздо более крупной системы.
Предположим, вам нужно создать приложение, предлагающее продавцам звонить людям.
У каждой перспективы есть некоторые «текстовые» данные (например, имя, пол, дата рождения, адрес, номер телефона, электронная почта, ...), фотография и некоторая история его/ее взаимодействия с другими лицами и продавцами.
Текстовые данные хранятся в таблице Mysql (лицо), где-то в файловой системе, и кто-то уже выпустил службы, которые возвращают список потенциальных лиц, заинтересованных в контакте, учитывая продавца и оценку для каждой перспективы в качестве покупателя ,
Я, вероятно, в конечном итоге следующее:
общедоменного Person объекта с именем, номер телефона, адрес, адрес электронной почты и фото. Setters и getters для всего свойства плюс методы getScore().
Два DAO, один для таблицы mysql и один для файловой системы.
Услуга для получения списка перспективы для данного продавца (пользователь приложения, который не входит в объем данного примера).
Что мне не ясно:
Метод getScore() в объекте домена может непосредственно вызвать службу в уровне услуг? Если нет, то почему?
Нужен ли мне отдельный DTO для данных, поступающих из разных DAO?
Если это так, мне нужен какой-то менеджер или «супер» DAO, которые владеют логикой о том, как собрать две части информации (т. Е. Получить URI из DQ mysql, загрузить файл, загрузить изображение) ? Должно ли это находиться в слое данных или на уровне обслуживания? (мне кажется, что я должен оставаться в слое данных, поскольку он имеет дело с хранением данных).
Вывод менеджера или «супер DAO» должен быть другим DTO или может быть непосредственно объектом домена?
Если DTO, мне нужна служба, которая вызывает диспетчер/супер DAO и создает объект домена (в этом случае я предполагаю, что служба «добавит» счет объекту домена).
Я знаю, что я сформулировал вопрос, но я не могу понять, как разработать решение.
HI, резервуары для вашего ответ, но я все еще немного смущен: – Marcoc1712
DAO = доступ к данным, DO = представление данных, поэтому не тот же класс IMHO –
http://www.martinfowler.com/bliki/AnemicDomainModel.html –