2010-04-23 13 views
7

में प्रयुक्त डिजाइन पैटर्न मैं एसटीएल और डिजाइन पैटर्न सीख रहा हूं। मुझे पता है कि वहाँ किसी भी दस्तावेज़ या लिंक बताते हैं कि कैसे डिजाइन पैटर्न एसटीएल में लागू कर रहे हैं चाहता था मैं गूगल लेकिन बहुत ज्यादा नहीं डेटाएसटीएल (मानक टेम्पलेट लाइब्रेरी)

+3

एसटीएल जेनेरिक प्रोग्रामिंग ऑब्जेक्ट उन्मुख नहीं है। आपको पीछे हटना होगा। – KitsuneYMG

+1

@kts: डिज़ाइन-पैटर्न ऑब्जेक्ट-ओरिएंटेड डिज़ाइन के लिए विशिष्ट नहीं हैं। –

+0

क्या आप कुछ एसटीएल कार्यान्वयन देखते हैं। स्रोत कोड आपको बहुत सारे प्रश्नों का उत्तर दे सकता है। – Ross

उत्तर

12

मुझे आशा है कि आपका मतलब है, "एसटीएल में कौन से डिजाइन पैटर्न की पहचान की जा सकती है"।

एसटीएल स्टैक एक कंटेनर एडाप्टर है। एक एडाप्टर एक डिजाइन पैटर्न है। इटेटरेटर भी एक डिजाइन पैटर्न है। एसटीएल फ़ंक्शन ऑब्जेक्ट कमांड पैटर्न से संबंधित हैं।

पैटर्न:

  1. एडाप्टर (कंटेनर एडेप्टर)
    • ढेर
    • कतारों
    • प्राथमिकता कतारों
  2. इटरेटर
  3. आदेश + एडाप्टर (समारोह एडेप्टर)
  4. इटरेटर + एडाप्टर (इटरेटर एडेप्टर)
    • रिवर्स iterators
    • डालने iterators
    • धारा iterators
  5. टेम्पलेट विधि (एसटीएल एल्गोरिदम उपयोगकर्ता द्वारा निर्दिष्ट कार्यों का प्रयोग करके)
  6. कौन सा creational पैटर्न ? (ऑलोकेटर)

इन पैटर्नों को लागू करने के तरीके को ऑब्जेक्ट उन्मुख डिज़ाइन में लागू करने के तरीके से बहुत अलग है। जोसुटिस ने लिखा "एसटीएल अवधारणा ऑब्जेक्ट उन्मुख प्रोग्रामिंग के मूल विचार के विपरीत है"। यही कारण है कि आपके प्रश्न के आसपास भ्रम पैदा हो रहा है।

+0

क्या आपके पास एसटीएल में एक इटरेटर एडाप्टर का उदाहरण है? – Frank

+0

@ डेहमान: मैंने उन्हें जोड़ा। मेरे जवाब को संपादित करने के लिए स्वतंत्र महसूस करें। –

+1

5. टेम्पलेट विधि (उपयोगकर्ता द्वारा निर्दिष्ट कार्यों का उपयोग कर एसटीएल एल्गोरिदम) –

1

मुझे लगता है कि तुम्हारी समस्या है कि डिजाइन पैटर्न में लागू नहीं कर रहे हैं कि प्राप्त करने में सक्षम किया एसटीएल। उन्हें सी ++ में कार्यान्वित किया जा सकता है और एसटीएल से कंटेनर और एल्गोरिदम का उपयोग किया जा सकता है लेकिन एसटीएल और डिजाइन पैटर्न किसी भी अन्य तरीके से संबंधित नहीं हैं।

मेरी सलाह Nicolai Josuttis' excellent book The C++ Standard Library: A Tutorial and Reference या STL Tutorial and Reference Guide जैसी कुछ पढ़कर एसटीएल के बारे में जानना होगा। यह सीखने में मदद करेगा कि एसटीएल आपके लिए क्या कर सकता है। फिर एसटीएल के बारे में अपने ज्ञान का उपयोग कर सी ++ में डिजाइन पैटर्न को कार्यान्वित करने में खुदाई करें।

+1

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

+0

Iterators एक डिजाइन पैटर्न है। निश्चित रूप से एसटीएल में लागू किया गया। –

+0

@ मार्टिन यॉर्क - नाम के बावजूद, मैं इस बात से सहमत नहीं हूं कि एसटीएल में इटरेटर के कार्यान्वयन इटरेटर डिजाइन पैटर्न का एक संकेतक है जो पॉइंटर्स से कहीं ज्यादा है। कैननिकल इटरेटर पैटर्न में यह निर्धारित करने के लिए एक तरीका शामिल है कि ट्रैवर्सल अंतर्निहित संग्रह पूछे बिना आइटम नहीं देगा। –

1

एसटीएल टेम्पलेट्स का व्यापक उपयोग करता है। GoF इस पैरामीटरयुक्त प्रकार को कॉल करें। टेम्पलेट्स डिज़ाइन पैटर्न समाधान को अनुकूलित करने या नए, सहज समाधान के साथ आने में उपयोगी होते हैं। (अधिक जानकारी के लिए, "Design Patterns: Elements of Reusable Object-Oriented Software" में "विरासत बनाम पैरामीटरेटेड प्रकार" अनुभाग देखें)। एसटीएल (और boost) से परिचित होने का लाभ यह है कि वे सी ++ में टेम्पलेट्स (और मेटा-प्रोग्रामिंग) के बारे में जानने के लिए एक अच्छा स्रोत हैं, जो बदले में बेहतर डिज़ाइन तैयार करने में उपयोग किए जा सकते हैं।

0

सी ++ 11 से, हम smart pointer, यानी, shared_ptr, unique_ptr और weak_ptr की threes प्रकार है, उनके पीछे पैटर्न है: प्रॉक्सी पैटर्न

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