2015-08-25 3 views
7

हाल ही में मुझे इस प्रश्न को एक साक्षात्कार में पूछा गया था। सटीक प्रश्नपाठ संपादक को लागू करने के लिए डेटा संरचना?

टेक्स्ट संपादक को लागू करने के लिए आप किस डेटा संरचना का उपयोग करेंगे। संपादक का आकार बदला जा सकता है और आपको इटालिक, बोल्ड इत्यादि जैसे सभी पाठों के लिए स्टाइलिंग जानकारी को भी सहेजने की आवश्यकता है?

उस समय, मैंने स्टैक, डबली लिंक्ड सूची और सभी जैसे कई अलग-अलग दृष्टिकोणों का उपयोग करके उसे मनाने की कोशिश की।

उस समय से, यह सवाल मुझे परेशान कर रहा है।

+0

http://stackoverflow.com/questions/4046246/how-are-text-editors-generally- कार्यान्वित –

उत्तर

0

इस तरह का एक खुला-अंत प्रश्न यह देखने के लिए और अधिक डिज़ाइन किया गया है कि क्या आप एक ऐसा डिज़ाइन बनाने के बारे में सोच सकते हैं जो एक, विशिष्ट उत्तर के बजाय एक साथ लटकता है।

प्रश्न का एक विशेष उत्तर डीओएम/एक्सएमएल ("दस्तावेज़ ऑब्जेक्ट मॉडल") का उपयोग करना है। मार्कअप "भाषाएं" इस सटीक समस्या को हल करने के लिए लक्षित हैं। आप एक डोम में संपादक के लिए डेटा स्टोर कर सकते हैं। डीओएम का उपयोग करने के फायदों में से एक यह है कि ज़ीरिस जैसी पुस्तकालय हैं जिनके पास डीओएम के निर्माण और प्रबंधन के लिए व्यापक समर्थन है, इसलिए आपके लिए बहुत सारे काम किए जाते हैं। यह संभव है कि साक्षात्कारकर्ता ने इसका आदर्श जवाब दिया।

एक और सामान्य उत्तर यह है कि किसी नेस्टेड अनुक्रम संरचना का उपयोग किया जा सकता है। पाठ तारों के अनुक्रम के रूप में देखा जा सकता है। अनुक्रम के प्रत्येक elment, डेटाबेस में पंक्तियों की तरह, कई विशेषताओं (फ़ॉन्ट प्रकार, फ़ॉन्ट आकार, इटालिक, बोल्ड, स्ट्राइकथ्रू, आदि) हो सकता है। नेस्टिंग (पदानुक्रम) उपयोगी है क्योंकि दस्तावेज़ में अध्याय, खंड, अनुच्छेद जैसे संरचना हो सकती है। उदाहरण के लिए, यदि एक अनुच्छेद का अपना स्टाइल (इंडेंट) है, तो इसके लिए अपना स्तर होना चाहिए।

Document 
    Chapter 
     Paragraph 
     Text 

इसे लागू करने के लिए, आप एक पेड़ और पेड़ के प्रत्येक नोड का प्रयोग करेंगे कई गुण हैं: तो आप कुछ इस तरह की है। आपको विभिन्न प्रकार के नोड्स (अध्याय नोड्स, पैराग्राफ नोड्स इत्यादि) की आवश्यकता होगी। इसलिए, उदाहरण के लिए, एक पेपर जैसे दस्तावेज़ में एक दस्तावेज़ नोड के अंदर एकाधिक अनुभाग नोड्स और नोट्स नोड होगा, लेकिन एक पुस्तक-जैसे दस्तावेज़ में दस्तावेज़ नोड के अंदर अध्याय नोड्स हो सकते हैं। इस दृष्टिकोण का लाभ यह है कि यह एक डीओएम का उपयोग करने की तुलना में समस्या के लिए अधिक विशिष्ट और हाथ से तैयार है, जो एक अधिक लचीला दृष्टिकोण है।

आप डीओएम का उपयोग करके अपनी आधार संरचना और आपके डीओएम कार्यान्वयन के रूप में वर्णित पदानुक्रमित संरचना के रूप में दो दृष्टिकोणों को भी जोड़ सकते हैं।

(नोट: भविष्य में आप https://softwareengineering.stackexchange.com/ को इस तरह के प्रश्न पोस्ट चाहिए)

2

पिछले जवाब के अलावा, मैं जोड़ने के लिए है कि आदेश डेटा संरचनाओं को प्राप्त करने के लिए चाहते हैं, तो आपको पहले पता करने की जरूरत आपका डिज़ाइन - अन्यथा विकल्प बहुत व्यापक चुने जाएंगे।

उदाहरण के तौर पर मान लें कि आपको एक संपादन कार्यक्षमता की आवश्यकता होगी। यहां State और Memento डिज़ाइन पैटर्न एक अच्छे फिट होंगे। बहुत उपयुक्त संरचना Cord हो जाएगा, क्योंकि यह

छोटे तार से बना है कि कुशलतापूर्वक भंडारण और एक बहुत ही लंबी स्ट्रिंग जोड़ तोड़ के लिए प्रयोग किया जाता है है।

हमारे मामले में पाठ संपादन प्रोग्राम

एक रस्सी का उपयोग कर सकते पाठ प्रतिनिधित्व करने के लिए संपादित किया जा रहा है, ताकि इस तरह के सम्मिलन, विलोपन, और रैंडम एक्सेस के रूप में संचालन कुशलतापूर्वक किया जा सकता है।

rope

2

ऐसा लगता है कि वे जानना चाहते हैं यदि आप flyweight pattern बारे में जानते थे और उसे सही ढंग से उपयोग करने के लिए।

उस पैटर्न का वर्णन करते समय एक टेक्स्ट एडिटर एक आम उदाहरण है।

शायद आपका साक्षात्कारकर्ता जीओएफ पुस्तक का प्रेमी था। :-)

+0

यह वही है जो मुझे दिखाई देता है! फ्लाईवेट पैटर्न कई साक्षात्कारकर्ताओं का पसंदीदा है जो गोफ बुक पसंद करते हैं। आप आमतौर पर पुस्तक को अपने बुकशेल्फ़ पर बैठे सभी हार्ड कवर महिमा में पा सकते हैं। :-) –

संबंधित मुद्दे