Я бачив різні аргументи проти того, щоб DAO викликався безпосередньо з класу Controller, а також DAO з класу Model.Infact Я особисто вважаю, що якщо ми слідуємо за схемою MVC, контролер повинен поєднуватися не з DAO, а з класом Model слід викликати DAO зсередини, а контролер повинен викликати клас моделі. Чому тому, що ми можемо роз'єднати клас моделі, окрім webapplication і розкрити функціональні можливості різними способами, як для служби REST для використання нашого модельного класу.
Якщо ми запишемо виклик DAO в контролер, служба REST не зможе повторно використовувати функціональність? Я підсумував обидва підходи нижче.
Підхід №1
public class CustomerController extends HttpServlet {
proctected void doPost(....) {
Customer customer = new Customer("xxxxx","23",1);
new CustomerDAO().save(customer);
}
}
Підхід №2
public class CustomerController extends HttpServlet {
proctected void doPost(....) {
Customer customer = new Customer("xxxxx","23",1);
customer.save(customer);
}
}
public class Customer {
...........
private void save(Customer customer){
new CustomerDAO().save(customer);
}
}
Примітка -
Ось що таке визначення моделі:
Модель: модель керує поведінкою та даними домену програми, відповідає на запити про інформацію про її стан (як правило, з виду) та відповідає на вказівки щодо зміни стану (зазвичай від контролера).
У системах, керованих подіями, модель сповіщає спостерігачів (зазвичай перегляди), коли інформація змінюється, щоб вони могли реагувати.
Мені знадобиться експертна думка з цього приводу, тому що я знаходжу багатьох, хто використовує №1 або №2. Отже, який це?