की तरह तुम सिर्फ एक डिजाइन पैटर्न के लिए पूछ रहे हैं (या पैटर्न का समूह) है आप एक सामान्य, भविष्य प्रूफ तरीके से ऐसा करने के लिए, सही इस्तेमाल कर सकते हैं मेरे लिए ध्वनि?
आदर्श रूप में विशेषताओं है कि आप शायद चाहते
- प्रत्येक "ट्रांसफॉर्मर" के कुछ एक-दूसरे से decoupled है।
- आप अपने मुख्य "ड्राइवर" दिनचर्या को फिर से लिखने के बिना आसानी से नए "ट्रांसफार्मर" जोड़ सकते हैं।
- आप पुन: संयोजित/अपने पूरे समाधान हर बार जब आप एक ट्रांसफॉर्मर, संशोधित करने, या कम से कम एक नया जोड़ें पुनर्वितरित की जरूरत नहीं है।
प्रत्येक "ट्रांसफार्मर" आदर्श रूप से एक सामान्य इंटरफ़ेस को कार्यान्वित करना चाहिए जो आपके ड्राइवर की नियमितता के बारे में जानता है - इसे IXmlTransformer कहें। इस इंटरफ़ेस की ज़िम्मेदारी एक एक्सएमएल फाइल लेना और डेटाबेस में सहेजने के लिए उपयोग किए जाने वाले ऑब्जेक्ट मॉडल/डेटासेट को वापस करना है। आपके प्रत्येक ट्रांसफार्मर इस इंटरफेस को लागू करेंगे। सामान्य ट्रांसफॉर्म के लिए जो सभी ट्रांसफॉर्मर्स द्वारा साझा किया जाता है, आप या तो एक आधारित वर्ग बना सकते हैं जो सभी से प्राप्त होता है, या (मेरी पसंदीदा पसंद) में सहायक तरीकों का एक सेट होता है जिसे आप उनमें से किसी से कॉल कर सकते हैं।
मैं एक फैक्टरी का उपयोग कर अपने मुख्य चालक दिनचर्या से प्रत्येक "ट्रांसफॉर्मर" बनाने के लिए करने से शुरू होगा। फैक्ट्री उन सभी असेंबली से पूछताछ करने के लिए प्रतिबिंब का उपयोग कर सकती है जो इसे देख सकती हैं, या एमईएफ जैसी कुछ जो आपके लिए बहुत काम कर सकती है। आपके ड्राइवर तर्क को सभी ट्रांसफार्मर बनाने और उन्हें स्टोर करने के लिए कारखाने का उपयोग करना चाहिए।
तो फिर तुम कुछ तर्क और तंत्र के लिए "देखने" प्रत्येक एक्सएमएल फ़ाइल किसी दिए गए ट्रांसफार्मर के लिए प्राप्त की जरूरत है - शायद हर एक्सएमएल फ़ाइल एक हैडर जो आपको पहचानते हैं या कुछ इसी तरह करने के लिए इस्तेमाल कर सकते हैं है। दोबारा, आप अपने मुख्य तर्क से इन decoupled रखना चाहते हैं ताकि आप आसानी से ड्राइवर ट्रांसलाइन के संशोधन के बिना नए ट्रांसफार्मर जोड़ सकते हैं। आप उदा। प्रत्येक ट्रांसफार्मर को एक्सएमएल फ़ाइल की आपूर्ति करें और पूछें कि "क्या आप इस फाइल को बदल सकते हैं", और यह प्रत्येक ट्रांसफॉर्मर पर दी गई फ़ाइल के लिए "जिम्मेदारी लेना" है।
हर बार जब आपका ड्राइवर दिनचर्या एक नई एक्सएमएल फ़ाइल प्राप्त करता है, तो यह उचित ट्रांसफार्मर को देखता है, और इसे चलाता है; परिणाम डीबी प्रसंस्करण क्षेत्र में भेजा जाता है। यदि कोई ट्रांसफॉर्मर नहीं मिल सकता है, तो आप बाद में पूछताछ के लिए फ़ाइल को निर्देशिका में डंप करते हैं।
मैं रॉबर्ट मार्टिन (http://www.amazon.co.uk/Agile-Principles-Pternterns-Practices-C/dp/0131857258) द्वारा एग्इल सिद्धांतों, पैटर्न और प्रथाओं जैसी पुस्तक पढ़ने की अनुशंसा करता हूं, जो देता है आपके जैसे परिस्थितियों के लिए उचित डिजाइन पैटर्न के अच्छे उदाहरण उदा फैक्टरी और DIP आदि
आशा है कि मदद करता है!
स्रोत
2010-12-26 15:35:09
क्या कोई विशिष्ट कंपनी कम से कम एक ही प्रारूप में एक डंप भेजती है या यह विभिन्न डंप के लिए अलग हो सकती है? – InSane
आप xml से xsd उत्पन्न कर सकते हैं और फिर .NET के xsd टूल का उपयोग कर xsd फ़ाइल से क्लास मॉडल उत्पन्न कर सकते हैं। और फिर इस प्रकार के लिए एक असेंबली बनाएं और इसे अपने एप्लिकेशन में प्रतिबिंब का उपयोग करके लोड करें। एप्लिकेशन में कक्षा का उपयोग फिर से सदस्यों से पूछताछ, उदाहरण बनाने और मान असाइन करने के लिए प्रतिबिंब का उपयोग करेगा। –