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