Giả sử tôi có hai thực thể Người dùng và Mục. Hành vi duy nhất trong miền giữa hai thực thể này là người dùng có thể thích một mục. Vì không có giới hạn về số lượng mục mà người dùng có thể thích, mối quan hệ nhiều-nhiều này có thể lớn. Tôi không nghĩ rằng nó có ý nghĩa về mặt hiệu suất để Người dùng có chứa một danh sách các mục họ thích trong mô hình của nó hoặc theo cách khác, vì tôi sẽ phải tải một bộ sưu tập các mục có khả năng lớn để chỉ thêm một mục. Từ quan điểm thiết kế tên miền, nó cũng không có ý nghĩa với tôi để có một trong hai thực thể tham chiếu khác trong các lĩnh vực của họ như là không có hành vi yêu cầu sự hiện diện của một bộ sưu tập các mặt hàng hoặc người dùng.Thiết kế điều khiển tên miền: Cách mô hình hóa các mối quan hệ lớn nhưng có ít hành vi
Tôi cần giữ mối quan hệ này vì giao diện người dùng cần hiển thị danh sách các mục mà người dùng thích và danh sách người dùng thích một mục. Yêu cầu có thể được phục vụ bởi một mô hình đã đọc nhưng tôi vẫn cần một khái niệm miền để nắm bắt mối quan hệ này để nó có thể được duy trì. Một trong những cách tôi có thể đưa ra là giới thiệu một loại quan hệ tổng hợp, nói UserLikeItem, và có phương thức user.like (item) trả về một thể hiện của UserLikeItem mà sau đó tôi có thể sử dụng UserLikeItemRepository để tồn tại lâu dài.
Đây có phải là giải pháp hợp lệ không? Cách tự nhiên trong DDD để mô hình hóa loại quan hệ lớn nhưng không hành vi này là gì?
Tôi thích (pun!) Giải pháp của bạn, mặc dù nó không cần phải là một phương pháp trên 'User' IMO. Nó cũng cho phép bạn nắm bắt thông tin bổ sung như thời gian mục được thích, trong ngữ cảnh nào, v.v. AR tương tự có thể được sử dụng không giống như vậy, nhưng có thể bạn cần phải tìm một tên tốt hơn cho nó. – guillaume31
Tôi đồng ý, điều duy nhất tôi có thể thêm là một 'LikeCounter' vào Mục, để bạn có thể hiển thị tổng số như đếm cho một mục mà không cần phải nhấn nguồn dữ liệu' UseLikeItem'. –
Một đối tượng giao dịch hoặc một sự kiện miền "UserLikedItem" có vẻ phù hợp với những gì bạn đã cho chúng tôi tiếp tục. –