2008-08-14 17 views
6

क्या कोई बाइनरी डेटा फ़ाइल लेने, ऑब्जेक्ट्स में इसके हिस्सों को पार्स करने और परिणामी डेटा को डेटाबेस में संग्रहीत करने के लिए डिज़ाइन पैटर्न की अनुशंसा करता है?बाइनरी फ़ाइल डेटा को पार्स करने और डेटाबेस में संग्रहीत करने के लिए डिज़ाइन पैटर्न

मुझे लगता है कि एक समान पैटर्न का उपयोग एक्सएमएल या टैब-डिलीमिट फ़ाइल के लिए किया जा सकता है और इसे अपने प्रतिनिधि ऑब्जेक्ट्स में पार्स कर सकता है।

एक आम डेटा संरचना में शामिल हैं:

(हैडर) (DataElement1) (DataElement1SubData1) (DataElement1SubData2) (DataElement2) (DataElement2SubData1) (DataElement2SubData2) (EOF)

मैं एक लगता है अच्छे डिज़ाइन में फ़ाइल प्रकार या शीर्षलेख में शामिल कुछ परिभाषित मेटाडेटा के आधार पर पार्सिंग परिभाषा को बदलने का एक तरीका शामिल होगा। इसलिए Factory Pattern पार्सर भाग के लिए समग्र डिज़ाइन का हिस्सा होगा।

उत्तर

21
  1. बस, अपनी फ़ाइल पार्सर लिखने जो कुछ तकनीकों मन में
  2. इकाई परीक्षण के बहुत सारे लिखें यह सुनिश्चित करें कि आपके सभी किनारे मामलों

बार जब आप इस किया है कवर कर रहे हैं बनाने के लिए के लिए आने का उपयोग कर आपको वास्तव में समस्या/समाधान का उचित विचार होगा।

अभी अभी आपके पास अपने सिर में चारों ओर तैरते सिद्धांत हैं, जिनमें से अधिकांश गुमराह हो जाएंगे।

चरण 3: निर्विवाद रूप से रिफैक्टर। आपका लक्ष्य आपके कोड का लगभग आधा

आपको मिल जाएगा कि अंत में आपका कोड या तो मौजूदा डिज़ाइन पैटर्न जैसा दिखता है, या आप एक नया बनायेंगे। इसके बाद आप इस प्रश्न का उत्तर देने के लिए योग्य होंगे :-)

1

रणनीति पैटर्न शायद वह है जिसे आप देखना चाहते हैं। फ़ाइल पार्सिंग एल्गोरिदम की रणनीति है।

फिर आप डेटाबेस सम्मिलन के लिए एक अलग रणनीति चाहते हैं।

4

मैं ओरियन एडवर्ड्स से पूरी तरह से सहमत हूं, और आमतौर पर मैं समस्या से संपर्क करता हूं; लेकिन हाल ही में मैं पागलपन के लिए कुछ पैटर्न (!) देखना शुरू कर दिया है।

कुछ builder (या factory) डेटा के प्रत्येक भाग को बनाने के लिए उपयोग करता है अधिक जटिल कार्य मैं आमतौर पर एक interpreter (या एक strategy) की तरह कुछ का उपयोग करें

डेटा स्ट्रीमिंग के लिए, संपूर्ण पार्सर adapter जैसा कुछ दिखाई देगा, स्ट्रीम ऑब्जेक्ट से ऑब्जेक्ट स्ट्रीम (जो आमतौर पर केवल एक कतार है) से अनुकूलित होता है।

आपके उदाहरण के लिए शायद पूर्ण डेटा संरचना (सिर से ईओएफ) के लिए एक निर्माता होगा जो आंतरिक डेटा तत्वों (दुभाषिया द्वारा खिलाया गया) के लिए आंतरिक रूप से बिल्डरों का उपयोग करता है। एक बार ईओएफ का सामना करने के बाद एक वस्तु उत्सर्जित हो जाएगी।

हालांकि, कुछ फैक्ट्री फ़ंक्शन में स्विच स्टेटमेंट में बनाए गए ऑब्जेक्ट्स शायद कम कम कार्यों के लिए सबसे आसान तरीका है।साथ ही, मुझे अपने डेटा-ऑब्जेक्ट्स को अपरिवर्तनीय रखना पसंद है क्योंकि आप कभी नहीं जानते कि कोई आपके गले में समेकन को कबूतर करता है :)

1

Lex और वाईएसीसी का उपयोग करें। जब तक आप अगले दस वर्षों को विशेष रूप से इस विषय पर समर्पित न करें, वे हर बार बेहतर और तेज़ कोड तैयार करेंगे।