Tôi đã thấy các đối số khác nhau chống lại DAO được gọi trực tiếp từ lớp Trình điều khiển và cả DAO từ lớp Mô hình. Cá nhân tôi cảm thấy rằng nếu chúng ta đang theo mô hình MVC, thì trình điều khiển không nên kết hợp với DAO, mà là lớp Mô hình nên gọi DAO từ bên trong và bộ điều khiển sẽ gọi lớp mô hình. Tại sao, vì chúng ta có thể tách lớp mô hình ra khỏi ứng dụng web và hiển thị các chức năng cho nhiều cách khác nhau như dịch vụ REST sử dụng lớp mô hình của chúng ta.
Nếu chúng ta viết lời gọi DAO trong bộ điều khiển, dịch vụ REST sẽ không thể sử dụng lại chức năng phải không? Tôi đã tóm tắt cả hai cách tiếp cận dưới đây.
Cách tiếp cận số 1
public class CustomerController extends HttpServlet {
proctected void doPost(....) {
Customer customer = new Customer("xxxxx","23",1);
new CustomerDAO().save(customer);
}
}
Cách tiếp cận số 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);
}
}
Ghi chú -
Đây là định nghĩa của Model là gì:
Mô hình: Mô hình quản lý hành vi và dữ liệu của miền ứng dụng, trả lời các yêu cầu cung cấp thông tin về trạng thái của nó (thường là từ chế độ xem) và trả lời các hướng dẫn để thay đổi trạng thái (thường là từ bộ điều khiển).
Trong các hệ thống hướng sự kiện, mô hình thông báo cho người quan sát (thường là chế độ xem) khi thông tin thay đổi để họ có thể phản ứng.
Tôi sẽ cần một ý kiến chuyên gia về điều này bởi vì tôi tìm thấy nhiều người sử dụng # 1 hoặc # 2, vậy đó là cái nào?