Я просмотрел много информации о шаблоне DAO и понял суть. Но я чувствую, что большинство объяснений не рассказывают всю историю, и под этим я подразумеваю, где бы вы на самом деле использовали свой DAO. Так, например, если у меня есть класс User и соответствующий UserDAO, который может сохранять и восстанавливать пользователей для меня, что является правильным способом:
Контроллер создает объект User и передает его в UserDAO для сохранения в базе данных
. Контроллер создает объект User, а в своем конструкторе объект user вызывает userDAO, чтобы сохранить себя в базе данных
. Это запах кода, и вам не хватает дополнительного класса «UserManager», который контроллер попросит создать пользователя. UserManager отвечает за создание пользователя и просит UserDAO сохранить его
. Мне действительно кажется, что третий вариант является лучшим, потому что все, за что отвечает контроллер, — это делегирование запроса правильному объекту модели. Какой твой любимый способ? Я что-то упустил здесь?