मैं एक मौजूदा एप्लिकेशन के ग्रीनफील्ड मॉड्यूल के लिए DDD जैसा दृष्टिकोण उपयोग कर रहा हूं; यह वास्तुकला के कारण 100% डीडीडी नहीं है, लेकिन मैं कुछ डीडीडी अवधारणाओं का उपयोग करने की कोशिश कर रहा हूं। मेरे पास एक बाध्य संदर्भ है (मुझे लगता है कि यह उचित शब्द है - मैं अभी भी डीडीडी के बारे में सीख रहा हूं) जिसमें दो एंटिटीज शामिल हैं: Conversation
और Message
। वार्तालाप जड़ है, क्योंकि संदेश वार्तालाप के बिना मौजूद नहीं है, और सिस्टम के सभी संदेश वार्तालाप का हिस्सा हैं।
मेरे पास एक ConversationRepository
वर्ग है (हालांकि यह वास्तव में एक गेटवे की तरह है, मैं "रिपॉजिटरी" शब्द का उपयोग करता हूं) जो डेटाबेस में वार्तालाप पाता है; जब यह एक वार्तालाप पाता है तो यह उस रूपांतरण के लिए संदेशों की एक सूची (कारखानों के माध्यम से) भी बनाता है (एक संपत्ति के रूप में उजागर)। यह चीजों को संभालने का सही तरीका प्रतीत होता है क्योंकि इसमें पूर्ण-विकसित MessageRepository
वर्ग की आवश्यकता प्रतीत नहीं होती है क्योंकि यह केवल तभी मौजूद होता है जब वार्तालाप पुनः प्राप्त होता है।
हालाँकि, जब किसी संदेश को सहेजने की बात आती है, तो क्या यह वार्तालाप की मुख्य जिम्मेदारी है, क्योंकि यह संदेश की मूल जड़ है? मेरा क्या मतलब है, क्या मेरे पास कन्वर्सेशन रिपॉजिटरी पर एक विधि होनी चाहिए, कहते हैं, AddMessage
जो एक संदेश को पैरामीटर के रूप में लेता है और इसे डेटाबेस में बचाता है? या मेरे पास संदेश खोजने / सहेजने के लिए एक अलग भंडार होना चाहिए? तार्किक बात प्रत्येक इकाई के लिए एक रिपॉजिटरी प्रतीत होती है, लेकिन मैंने "प्रति संदर्भ एक रिपॉजिटरी" भी सुना है।