ฉันได้เห็นข้อโต้แย้งต่าง ๆ กับ DAO ที่ถูกเรียกจากคอนโทรลเลอร์คลาสโดยตรงและ DAO จากคลาส Model สิ่งประดิษฐ์ฉันรู้สึกว่าถ้าเราติดตาม MVC pattern ตัวควบคุมไม่ควรควบคู่กับ DAO แต่เป็น Model class ควรเรียกใช้ DAO จากภายในและผู้ควบคุมควรเรียกใช้คลาสโมเดลเพราะเราสามารถแยกคลาสโมเดลออกจากเว็บแอปพลิเคชันและแสดงฟังก์ชันการทำงานสำหรับวิธีต่างๆเช่นบริการ 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);
}
}
หมายเหตุ -
นี่คือนิยามของ Model คืออะไร:
โมเดล: โมเดลจัดการพฤติกรรมและข้อมูลของโดเมนแอ็พพลิเคชันตอบสนองต่อการร้องขอข้อมูลเกี่ยวกับสถานะของมัน (โดยปกติจะมาจากมุมมอง) และตอบสนองต่อคำแนะนำในการเปลี่ยนสถานะ (โดยปกติจากคอนโทรลเลอร์)
ในระบบที่ขับเคลื่อนด้วยเหตุการณ์นั้นโมเดลจะแจ้งผู้สังเกตการณ์ (โดยปกติจะเป็นมุมมอง) เมื่อข้อมูลมีการเปลี่ยนแปลงเพื่อให้สามารถตอบสนองได้
ฉันต้องการความเห็นจากผู้เชี่ยวชาญเกี่ยวกับเรื่องนี้เพราะฉันพบว่ามีหลายคนที่ใช้ # 1 หรือ # 2 ดังนั้นอันไหนล่ะ