Tôi đang so sánh khả năng sử dụng dịch vụ (theo nghĩa của một thành phần cục bộ quá trình như trong thùng chứa Windsor IoC) từ mô hình miền.Quy tắc truy cập dịch vụ từ các đối tượng miền
Tôi có 3 cách để đạt được điều này:
Xuất bản một sự kiện tên miền và có mã lớp dịch vụ xử lý nó
Tiêm dịch vụ thông qua một phương pháp trên đối tượng mô hình
Tiêm dịch vụ vào đối tượng mô hình
(4. Sử dụng một Service Locator)
Đầu tiên dẫn đến một mô hình rất biểu cảm và lặp lại, tạo ra các sự kiện miền và xử lý theo kiểu thủ tục cho các tác vụ đơn giản khác. Nhưng nó có sự tách rời tốt nhất của mô hình từ môi trường nó được sử dụng bên trong (mô hình được tự xác định).
Phương thức thứ hai làm cho các đối số dài hơn và có vẻ như nó phá vỡ đóng gói (nếu hành động của đối tượng mô hình yêu cầu các dịch vụ khác, tất cả người gọi phải thay đổi).
Thứ ba sẽ tiêm Phụ thuộc không bắt buộc đối với Giao dịch hiện tại. Ngoài ra một trong những nhu cầu "mở rộng" NHibernate cho việc này. Tôi sẽ tránh phương pháp này do các khuyến nghị khác đọc.
Vì tôi muốn viết điều này trong tài liệu của mình, tôi cần thông báo cho người đọc biết khi nào nên sử dụng phương pháp nào. Tôi đang nghĩ một cái gì đó dọc theo dòng "Sử dụng phương pháp tiêm nếu bạn sẽ đưa bộ xử lý sự kiện miền vào lắp ráp mô hình", nhưng nó không thực sự nhấn điểm.
Đề xuất cho quy tắc này?
Câu trả lời rất hay (đặc biệt là điểm có dữ liệu đáng chú ý). Tôi sẽ thực hiện quy tắc: "Sử dụng các sự kiện miền". Mặc dù tôi tìm thấy nó khá thủ tục và lặp đi lặp lại cho việc sử dụng các dịch vụ được "khái niệm miền", nó là một quy tắc với các vấn đề ít nhất. – sanosdole