निम्नलिखित सरल उदाहरण पर विचार करें। बाद में टिकट के जीवन चक्र में अन्य राज्यों को स्थापित किया जा सकता है।DDD इकाई राज्य संक्रमण
टिकट टिकट तालिका के साथ-साथ टिकटस्टेट में भी जारी है। तो डीबी के भीतर टिकट टिकट राज्य तालिका के लिए एक विदेशी कुंजी होगी।
जब मेरी यूनिट के भीतर उपयुक्त राज्य की स्थापना, मैं कैसे डीबी से राज्य उदाहरण लोड करूं? क्या मुझे इकाई में एक भंडार इंजेक्ट करना है? क्या मुझे ऐसे मामले के लिए महल जैसे ढांचे का उपयोग करने की ज़रूरत है? या क्या बेहतर समाधान हैं, शायद बाहर से राज्य को पारित कर रहे हैं?
public class Ticket
{
//...
public ITicketStateRepository stateRep; //<-- inject
public Ticket()
{
State = stateRep.GetById(NEW_STATE_ID);
}
//...
}
क्या कोई सर्वोत्तम अभ्यास है? अब तक मैं किसी भी निर्भरता इंजेक्शन ढांचे या कुछ भी उपयोग नहीं किया है और मैं डोमेन से बाहर एक और approch किसी भी हठ बातें रखा ..
:
public class Ticket
{
//...
public Ticket(NewTicketState newTicketState)
{
State = newTicketState;
}
public void Finished(FinishedTicketState finishedTicketState)
{
State = finishedTicketState;
}
//...
}
+1 निरंतर वस्तुओं के लिए +1। सिर्फ इसलिए कि डोमेन मॉडल को रिपोजिटरी ऑब्जेक्ट्स के साथ प्रदूषित किया गया है, इसका मतलब यह नहीं है कि यह एनीमिक नहीं है - असल में, यह उन स्थानों को छुपा सकता है जहां डोमेन ऑब्जेक्ट्स अपना वजन नहीं ले रहे हैं। –
धन्यवाद लेकिन शायद मेरा प्रश्न पर्याप्त स्पष्ट नहीं था। मैं पूछ रहा था कि एप्राइपिएट स्टेट इकाई को कैसे सेट करें जब उदा। टिकट instanstiated है या इसकी स्थिति बदल गई है। क्या आप उपरोक्त समस्या को हल करने के तरीके पर एक उदाहरण पोस्ट कर सकते हैं? – Chris
तत्काल स्थिति काफी आसान है: इसे नया होना चाहिए। कुछ राज्यों को बदलने के लिए घटनाओं को व्यवस्थित करना होगा। मैं आमतौर पर इसे एक सेवा कहता हूं, क्योंकि यह एक विशेष उपयोग मामले लागू करता है। यह भंडार का एक उदाहरण होगा, जिसका उपयोग यह एक नए टिकट को तत्काल करने या मौजूदा पढ़ने को पढ़ने के लिए करेगा, उपयोग के मामले को पूरा करने के लिए अपने राज्य को बदलें, नए राज्य को काम की एक इकाई के रूप में जारी रखें, और उपयोग समाप्त करें मामला। – duffymo