2012-07-23 15 views
6

मैं किसी भी ओआरएम का उपयोग नहीं कर रहा हूं। तो मुझे बहस हो रही है कि "सहेजें" विधि वास्तव में किसी व्यवसाय डोमेन इकाई से संबंधित है या किसी सेवा में सारणीबद्ध की जानी चाहिए जिसे सहेजने के लिए व्यवसाय डोमेन इकाई को सौंप दिया जाएगा?क्या "सहेजें" विधि व्यवसाय डोमेन इकाई से संबंधित है?

उदा।

class Employee 
{ 
    string Name; 
    DateTime Birth; 

    GetAge() 
    { 

    } 

    Save() 
    { 
    }   

} 

या

class Employee 
{ 
    string Name; 
    DateTime Birth; 

    GetAge() 
    { 

    } 


} 

SomePersistenceService 
{ 
    Save(Employee emp) 
     { 
     } 
} 

उत्तर

2

के बाद से इस सवाल का 'डोमेन संचालित डिजाइन' के साथ टैग है, तो आप आप के लिए यह करने के लिए भंडार की आवश्यकता होगी।


बस नियोक्ता रिपोजिटरी में कुछ PersistenceService का नाम बदलें। तो आप अपने दूसरे विकल्प के साथ सही रास्ते पर थे। "कुछ सेवा है कि व्यापार डोमेन इकाई सौंप दिया जाएगा में निकाला गया" डोमेन संचालित डिजाइन

में भंडार कहा जाता है एक भंडार नाटक करने के लिए है कि अपने डेटासंग्रह एक संग्रह है एक तरीका है। इसलिए और Delete के बजाय Add और Remove जैसी विधियां हैं।

+0

@@ जेरोन, अगर मैं अपना उदाहरण संशोधित करके एक उदाहरण दिखा सकता हूं तो मैं सराहना करता हूं। – devanalyst

3

कोई भी सबसे अच्छा समाधान नहीं है, आपने जो समस्या कहा है वह रिपोजिटरी और सक्रिय रिकॉर्ड पैटर्न के बीच पसंद है।

आम तौर पर, रेपोजिटरी इकाई परीक्षण के लिए अधिक उपयुक्त है, क्योंकि रिपोजिटरी इंटरफेस आसान मॉक करने योग्य हैं, रिपोजिटरी पैटर्न उच्च संयोजन और एकल जिम्मेदारी सिद्धांतों का उपयोग करता है (यह ओओपी के दृष्टिकोण से अजीब लग सकता है कि आपकी व्यावसायिक इकाई में कोड होगा खुद को डेटाबेस में सहेजना, नेटवर्क पर खुद को स्थानांतरित करना, या कुछ एक्सएमएल को निर्यात करना आदि)

सक्रिय रिकॉर्ड आरएडी विकास में अधिक गति प्रदान कर सकता है, और कुछ उपकरण जैसे स्प्रिंग रू को पहले केवल सक्रिय रिकॉर्ड, रिपोजिटरी का समर्थन किया गया था समर्थन हाल ही में जोड़ा गया था, जैसा कि मुझे पता है। रेल पर AFAIK रूबी सक्रिय रिकॉर्ड, और कुछ अन्य महान उपकरण भी उपयोग करता है।

डोमेन संचालित डिजाइन के लिए, आपको रेपॉजिटरी का उपयोग जेरोइन के रूप में करना चाहिए, क्योंकि रिपोजिटरी एक मूल डीडीडी पैटर्न है (यह डीएओ पैटर्न का एक डोमेन केंद्रित संस्करण है), लेकिन आपको यह जांचना चाहिए कि आपके टूल्स का प्रत्यक्ष समर्थन है या नहीं पैटर्न।

संबंधित मुद्दे