दिलचस्प पोस्ट
JQuery के साथ एक नया तत्व बनाने का पसंदीदा तरीका क्या एंड्रॉइड रेडियो बटन समूह में रेडियो बटन आइकन बदलना संभव है? वेब संदर्भ और सेवा संदर्भ में अंतर? किसी अन्य विकल्प के चयन के आधार पर चयन विकल्प कैसे परिवर्तित करें? आप डबल्यूपीएफ में बटन सीमा को पूरी तरह से कैसे हटा सकते हैं? Django डाउनलोड करने योग्य फ़ाइलें प्रदान करने के बाद मैं OOVER_QUERY_LIMIT प्रतिक्रिया प्राप्त किए बिना कैसे जीओकोड 20 पतों को प्राप्त कर सकता हूं? सी # सूची <> क्रमशः x और y कैसे bitConverter.ToInt32 विधि का उपयोग करके सी # में बड़ा endian से थोड़ा endian डेटा प्राप्त करने के लिए? जावास्क्रिप्ट eval () इतना खतरनाक है? SQL सर्वर में डायनामिक SELECT TOP @ वारा जावा ईई विनिर्देश और बहु ​​थ्रेडिंग पायथन समय उपाय फ़ंक्शन जावास्क्रिप्ट में दस्तावेज़ और दस्तावेज़ के बीच अंतर क्या है? ExpandableListView – बच्चों के साथ समूहों के लिए छुपाएं सूचक

संस्थाओं / व्यावसायिक वस्तुओं के लिए निर्भरता को हल करने के लिए आईओसी कंटेनर का उपयोग क्यों न करें?

मैं डी के पीछे की अवधारणा को समझता हूं, लेकिन मैं सिर्फ सीख रहा हूं कि अलग आईओसी कंटेनरों क्या कर सकते हैं। ऐसा लगता है कि ज्यादातर लोग आईओसी कंटेनर का उपयोग स्टेटलेस सेवाओं को तार करने के लिए करते हैं, लेकिन उन चीजों के बारे में इस्तेमाल करने के बारे में क्या है जैसे संस्थाएं?

चाहे वह सही या गलत हो, मैं आमतौर पर व्यवहार के साथ मेरी संस्थाओं को सामान देता हूं, भले ही उस व्यवहार के लिए बाहरी कक्षा की आवश्यकता हो। उदाहरण:

public class Order : IOrder { private string _ShipAddress; private IShipQuoter _ShipQuoter; public Order(IOrderData OrderData, IShipQuoter ShipQuoter) { // OrderData comes from a repository and has the data needed // to construct order _ShipAddress = OrderData.ShipAddress; // etc. _ShipQuoter = ShipQuoter; } private decimal GetShippingRate() { return _ShipQuoter.GetRate(this); } } 

जैसा कि आप देख सकते हैं, निर्भरताएं कंस्ट्रक्टर इंजेक्शन हैं। अब कुछ प्रश्नों के लिए

  1. क्या यह बुरा व्यवहार माना जाता है कि आपकी इकाइयां बाहर की कक्षाओं जैसे शिपॉपोटर पर निर्भर करती हैं? यदि इन परिभाषाओं को सही ढंग से समझ में आती है तो इन निर्भरता को समाप्त करना मुझे एक अशक्त डोमेन की ओर ले जाने लगता है

  2. क्या इन निर्भरताओं को हल करने के लिए एक आईओसी कंटेनर का उपयोग करने और आवश्यक होने पर एक इकाई का निर्माण करने के लिए खराब अभ्यास है? क्या इसे करना संभव है?

किसी भी अंतर्दृष्टि के लिए धन्यवाद

वेब के समाधान से एकत्रित समाधान "संस्थाओं / व्यावसायिक वस्तुओं के लिए निर्भरता को हल करने के लिए आईओसी कंटेनर का उपयोग क्यों न करें?"

सबसे पहले सवाल जवाब देना सबसे मुश्किल है। क्या संस्थाओं को बाहर की कक्षाओं पर निर्भर करता है? यह निश्चित रूप से करना सबसे आम बात नहीं है

यदि, उदाहरण के लिए, आप अपनी संस्थाओं में एक रिपॉजिटरी को इंजेक्ट करते हैं, तो आप प्रभावी रूप से सक्रिय रिकॉर्ड पैटर्न का कार्यान्वयन करते हैं। कुछ लोग इस सुविधा की सुविधा के लिए इस पद्धति को पसंद करते हैं, जबकि अन्य (मेरी तरह) इसे एक कोड गंध या विरोधी-पैटर्न मानते हैं क्योंकि यह एकल उत्तरदायित्व सिद्धांत (एसआरपी) का उल्लंघन करता है।

आप यह तर्क दे सकते हैं कि संस्थाओं में अन्य निर्भरताएं लगाने से आप एक ही दिशा में (एसआरपी से दूर) खींच सकते हैं। दूसरी ओर आप निश्चित रूप से सही हैं कि यदि आप ऐसा नहीं करते हैं, तो पुल एक अनैमीक डोमेन मॉडल की तरफ है।

जब तक मैं ग्रेग यंग (बेदखल) [डीडीडीडी पर पेपर] में आया, तब तक मैं इन सबके साथ संघर्ष कर रहा था [4] जहां वे बताते हैं कि रूढ़िवादी एन-टीयर / एन-लेयर वास्तुकला हमेशा सीआरयूडीडी (और इस तरह बल्कि एनीमिक होगा) )।

डोमेन ऑब्जेक्ट्स को मॉडलिंग करने के लिए हमारा फोकस बढ़ाना क्योंकि नाउंस के बजाय कमांड और इवेंट्स हमें एक उचित ऑब्जेक्ट-ओरिएंटेड डोमेन मॉडल बनाने में सक्षम बनाती हैं।

दूसरे सवाल का जवाब देना आसान है। आप समय-समय पर उदाहरण बनाने के लिए हमेशा एक सार फैक्ट्री का उपयोग कर सकते हैं। कैसल विंडसर के साथ आप टाइपिंग फैक्ट्री सुविधा का उपयोग भी कर सकते हैं, जिससे आपको कारखानों को मैन्युअल रूप से लागू करने के बोझ से राहत मिल सकती है।

मुझे पता है यह एक पुरानी पोस्ट है, लेकिन जोड़ना चाहते हैं डोमेन संस्था को खुद ही जारी रखना चाहिए, भले ही आप ctor में एक सारसभारित भंडार में पास करें। इसका कारण यह सुझाव है कि यह केवल यह नहीं कि यह एसआरपी का उल्लंघन करता है, यह डीडीडी के एकत्रीकरण के विपरीत है। मुझे समझाने की, डीडीडी जटिल एप्स के लिए स्वाभाविक रूप से गहरी रेखांकन के लिए अनुकूल है, इसलिए, हम "बच्चों" में परिवर्तनों को जारी रखने के लिए कुल या समग्र जड़ों का उपयोग करते हैं, इसलिए जब हम व्यक्तिगत बच्चों में दृढ़ता से इंजेक्शन लगाते हैं तो हम रिश्ते बच्चों का उल्लंघन करते हैं। समग्र या कुल रूट जो कि जीवन चक्र या एकत्रीकरण के "प्रभारी" होना चाहिए। बेशक समग्र जड़ या समग्र यह अपने खुद के ग्राफ या तो जारी रहती है। एक और डीडीडी ऑब्जेक्ट की निर्भरताओं को इंजेक्शन लगाने के साथ एक इंजेक्शन डोमेन ऑब्जेक्ट प्रभावी रूप से कोई राज्य नहीं है जब तक कोई अन्य ईवेंट उसके राज्य हाइड्रेट के लिए नहीं लेता। कोड के किसी भी उपभोक्ता को डोमेन ऑब्जेक्ट को पहले व्यवसाय करने के लिए इनटेट या सेटअप करने के लिए मजबूर किया जाएगा जो इनकैप्सुलेशन का उल्लंघन करता है।