मैं कुछ परियोजनाओं पर काम कर रहा हूं जिसमें डेटा लोड करना, कभी-कभी दूरस्थ रूप से, कभी-कभी स्थानीय, कभी-कभी JSON, कभी-कभी XML शामिल होता है। मेरी समस्या यह है कि विकास की गति और विभिन्न ग्राहकों के बदलते दिमाग के कारण मुझे लगता है कि मेरे डिजाइन बहुत कठोर हैं और मैं उन्हें अधिक लचीला होना चाहता हूं। मैं डेटा लोडिंग के पुन: प्रयोज्य समाधान के बारे में सोचने की कोशिश कर रहा हूं, और कुछ सलाह चाहूंगा क्योंकि मुझे लगता है कि आप में से कई को एक ही समस्या है।डिजाइन पैटर्न/डेटा लोडिंग समाधान
मैं करना चाहते हैं क्या एक सामान्य LoadingOperation सार वर्ग है, जो प्रकार पार्सर और लोडर के सदस्य चर, जो पार्स() और loadData() पद्धतियों respectivly है है बनाने के लिए है। पार्सर और लोडर वर्गीकृत अंतरफलक और वर्गों को लागू इन कुछ इस तरह के साथ XMLParser और JSONParser, LocalLoader और RemoteLoader आदि हो सकता है मैं एक नया वर्ग है जो प्रत्येक बात के लिए LoadingOperation फैली से लोड करना होगा चाहते हैं , मौसम एक स्थानीय एक्सएमएल फ़ाइल, या दूरस्थ JSON, या जो कुछ भी है।
समस्या यह है कि विशिष्ट पार्सर कार्यान्वयन कस्टम डेटा प्रकार वापस नहीं लौट सकते LoadingOperation वर्ग के बहुरूपी व्यवहार को तोड़ने के बिना है। मैं चारों ओर जेनरिक के साथ की तरह
class SpecificLoader extends LoadingOperation<CustomDataType>
LoadingOperation की उपवर्गों खिलवाड़ किया गया है और घोषित करने और पार्सर वर्गों के साथ इसी तरह की बातों कर रही है, लेकिन यह थोड़ा अजीब लगता है।
क्या किसी के पास कोई भी सुझाव है कि मैं क्या कर रहा हूं/बेहतर कर सकता हूं। मैं बदलते विनिर्देशों को जल्दी से प्रतिक्रिया करने में सक्षम होना चाहता हूं (इस तथ्य को अनदेखा कर रहा हूं कि उन्हें इतना बदलना नहीं चाहिए!) और कोड आदि का तार्किक पृथक्करण है ...
किसी भी मदद के लिए धन्यवाद!
संपादित करें: सवाल भी यहाँ link text
क्या आप विभिन्न स्रोतों से उसी डेटा से निपट रहे हैं। अर्थात। क्या आप इस डेटा के साथ एक ही व्यापार मॉडल ऑब्जेक्ट्स पॉप्युलेट कर रहे हैं? यदि नहीं, तो मुझे संदेह है कि पूरा दृष्टिकोण समझ में आता है ... – Jules
अच्छी तरह से मेरी सोच यह है कि यह स्थानीय डेटा/वेब-सेवाओं से निपटने के लिए एक पुन: प्रयोज्य पैटर्न होगा और इसी तरह (ये छोटे मोबाइल एप्लिकेशन हैं जिनमें छोटे देव समय और प्रोटोटाइप हैं आमतौर पर केवल स्थानीय डेटा आदि)। प्रत्येक प्रोजेक्ट के लिए यह कभी-कभी परिवर्तनीय स्रोतों से एक ही डेटा होता है, लेकिन विभिन्न परियोजनाओं के लिए यह निश्चित रूप से अलग-अलग डेटा और मॉडल है! :) – Dori
क्षमा करें, मुझे नहीं लगता कि यह कैसे काम करना चाहिए। पार्सिंग आपके व्यवसाय तर्क के बाद डेटा को संसाधित कर रही है और स्पष्ट रूप से यह तर्क और डेटा परिवर्तन है, इसलिए आपको किसी बिंदु पर विशिष्ट विधियों की आवश्यकता है। परत पर परत परत बनाना जब तक कि आप उस विशिष्ट परिवर्तन को कोई अच्छा नहीं करेंगे। अमूर्तता की एकमात्र परत जो मुझे समझ में आता है वह है यदि आप पार्सर विनिर्देशों को लपेटते हैं, ताकि आपके पास केवल myObject = loadData() का उच्च स्तरीय कॉल हो; या loadData (myObject) ;, ताकि आप वास्तविक पार्सर कार्यान्वयन को तुरंत बदल सकें। – Jules