2013-05-20 5 views
5

इटरेटर पैटर्न परिभाषा: इसके अंतर्निहित प्रतिनिधित्व को उजागर किए बिना अनुक्रमिक रूप से कुल वस्तु के तत्वों तक पहुंचने का एक तरीका प्रदान करता है। विकीएक अंतर्निहित प्रतिनिधित्व अंतर्दृष्टि का खुलासा क्यों कर रहा है?

अंतर्निहित प्रतिनिधित्व उजागर की परिणाम क्या हैं?

अधिक विस्तृत उत्तर प्रदान करने के लिए: इटरेटर पैटर्न इसे कैसे रोक रहा है?

+4

संक्षेप में, आप (उपयोगकर्ता) 'एररलिस्ट', 'हैश मैप', 'हैशसेट', 'ट्रीसेट' के लिए एक ही तरह से 'इटरेटर' का उपयोग करते हैं। आपको –

उत्तर

5

के अनुसार: http://www.oodesign.com/iterator-pattern.html

इटरेटर पैटर्न के विचार तक पहुँचने और संग्रह की वस्तुओं गर्त में उत्तीर्ण होने की जिम्मेदारी लेने और इटरेटर वस्तु में रख रहा है। इटेटरेटर ऑब्जेक्ट पुनरावृत्ति की स्थिति को बनाए रखेगा, वर्तमान आइटम का ट्रैक रखेगा और यह पहचानने का एक तरीका होगा कि कौन से तत्व पुनरावृत्त होने के बाद हैं।

कुछ लाभ है कि आप इस पैटर्न से प्राप्त कर सकते हैं:

  1. इटरेटर पैटर्न कोड डिजाइनर का उपयोग करना तय 1 जिस तरह से यात्रा अनुमति देनी है या कर सकते हैं (अगले() केवल का उपयोग करके) या रिवर्स यात्रा के रूप में अच्छी तरह से की अनुमति देते हैं (पिछला का उपयोग कर() ListIterator के रूप में)।
  2. चाहे वस्तु को हटाने की अनुमति दें या नहीं, यदि हां तो कैसे।
  3. ऑब्जेक्ट हटा दिए जाने पर आंतरिक हाउसकीपिंग बनाए रखें।
  4. यह आपको अपने ग्राहकों को अंतर्निहित संग्रह को समझने की अपेक्षा करने के बजाय संग्रह को पार करने की सामान्य तंत्र का खुलासा करने की अनुमति देता है।
1

तो अंतर्निहित प्रतिनिधित्व संपर्क में आते थे, ग्राहक कोड यह करने के लिए जोड़े को कर सकता है। फिर:

  • यदि प्रतिनिधित्व बदलता है, तो सभी कोड युग्मन को बदलना आवश्यक हो सकता है।
  • यदि आप एक अलग प्रकार के कंटेनर पर फिर से शुरू करना चाहते हैं, तो कोड युग्मन को पुराने कंटेनर में बदलना आवश्यक हो सकता है।

डेटा अबास्ट्रक्शन कोड में प्रतिनिधित्व में बदलाव के लिए अधिक लचीला बनाता है।

+0

के पीछे कार्यान्वयन की परवाह नहीं है, क्या आप प्रत्येक बुलेट के बारे में बात कर सकते हैं, यानी, इस परिणाम को क्रिया में देखना अद्भुत होगा। – lmiguelvargasf

1

संक्षेप में: अंतर्निहित प्रतिनिधित्व पर निर्भर सभी कोड बदल सकते हैं यदि आप प्रतिनिधित्व को बदलने का निर्णय लेते हैं।

उदा।, आपने पहले TreeMap का उपयोग करने का निर्णय लिया है, लेकिन फिर आप अब ऑर्डरिंग नहीं करना चाहते हैं (ज्यादातर मामलों में), तो आप HashMap पर बदल सकते हैं। कोई बढ़ती सूची पाने की कोशिश कर रहे आपके मानचित्र के माध्यम से लूपिंग कर रहा है। !!

इटरेटर पैटर्न का उपयोग करके, आप हमेशा उपयोगकर्ता को एक निश्चित तर्क (या केवल यादृच्छिक, जो एक प्रकार का तर्क है) के साथ कुछ हद तक लूप करने की क्षमता दे सकता है, यह जानने के बिना कि यह हुड के नीचे क्या है।

अब, अगर आप TreeMap के बजाय HashMap उपयोग करते हैं, आप उपयोगकर्ता के लिए एक क्रमबद्ध दृश्य का पर्दाफाश हो सकता है।यदि आप यह SortedIterator प्रदान करते हैं और उपयोगकर्ता को बताते हैं "इसका उपयोग करके परिणाम को सॉर्ट करने की गारंटी मिलेगी, लेकिन मैं आपको नीचे के बारे में कुछ भी नहीं बता सकता", आप जो भी चाहें प्रतिनिधित्व करने के लिए प्रतिनिधित्व बदल सकते हैं, जब तक इसका अनुबंध SortedIterator आपके द्वारा बनाए रखा जाता है।

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