Tôi đang sử dụng cách tiếp cận giống DDD cho mô-đun trường xanh của ứng dụng hiện có; đó không phải là 100% DDD do kiến trúc nhưng tôi đang cố gắng sử dụng một số khái niệm DDD. Tôi có một bối cảnh bị ràng buộc (tôi nghĩ đó là thuật ngữ phù hợp - tôi vẫn đang tìm hiểu về DDD) bao gồm hai Thực thể: Conversation
và Message
. Hội thoại là gốc, vì Tin nhắn không tồn tại mà không có cuộc hội thoại và tất cả các tin nhắn trong hệ thống là một phần của cuộc hội thoại.
Tôi có một ConversationRepository
lớp (mặc dù nó thực sự giống như Cổng, tôi sử dụng thuật ngữ "Kho lưu trữ") để tìm Cuộc trò chuyện trong cơ sở dữ liệu; khi tìm thấy Cuộc hội thoại, nó cũng tạo (thông qua các nhà máy) một danh sách các tin nhắn cho Cuộc hội thoại đó (được hiển thị dưới dạng một thuộc tính). Đây dường như là cách xử lý chính xác mọi thứ vì dường như không cần một MessageRepository
lớp toàn diện vì nó chỉ tồn tại khi lấy được Cuộc hội thoại.
Tuy nhiên, khi nói đến việc lưu Tin nhắn, đây có phải là trách nhiệm của ConversRep repository, vì đó là gốc tổng hợp của Tin nhắn? Ý tôi là, liệu tôi có nên sử dụng một phương thức trên ConversRep repository được gọi là AddMessage
lấy Thông điệp làm tham số và lưu nó vào cơ sở dữ liệu không? Hoặc tôi nên có một kho lưu trữ riêng để tìm / lưu Tin nhắn? Điều hợp lý dường như là một kho lưu trữ trên mỗi Thực thể, nhưng tôi cũng đã nghe "Một kho lưu trữ cho mỗi bối cảnh".