2009-02-09 18 views
7

मैं रणनीति पैटर्न कार्यान्वयन उदाहरण देख रहा हूं और ऐसा लगता है कि वे सी # प्रतिनिधियों के समान हैं। एकमात्र अंतर जो मैं देखता हूं वह यह है कि रणनीति पैटर्न कार्यान्वयन को स्पष्ट रूप से एक प्रतिनिधि घोषित करने की आवश्यकता नहीं है।रणनीति पैटर्न और प्रतिनिधियों के बीच क्या अंतर है?

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

क्या कोई और स्पष्ट अंतर है कि मुझे याद आ रही है?

मुझे लगता है कि एक संबंधित प्रश्न होगा, अगर वे समान हैं, तो दूसरे पर एक का उपयोग करने का क्या फायदा है?

उत्तर

12

बस रखें, आप रणनीति पैटर्न को लागू करने के लिए प्रतिनिधियों का उपयोग कर सकते हैं।

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

दूसरे शब्दों में, रणनीति पैटर्न ब्लूप्रिंट है, सी # प्रतिनिधि ईंटें हैं। आप बिना (रणनीति पैटर्न) घर का निर्माण कर सकते हैं। (आप इसे अन्य प्रकार की ईंटों के साथ भी बना सकते हैं, लेकिन प्रतिनिधियों की भाषा सुविधा में कुछ भी मूल रूप से रणनीति पैटर्न का वर्णन नहीं करता है)।

0

आप सी # में रणनीति पैटर्न को और कैसे लागू करेंगे?

+1

रणनीति पैटर्न बेहतर बहुरूपता के साथ लागू किया जाएगा रखते हुए विभिन्न तरीकों में चीजों को व्यवस्थित करने, कार्यान्वयन के बीच कोड साझा करने, के लिए आता है। –

+1

आप एक इंटरफ़ेस को परिभाषित कर सकते हैं और उस इंटरफ़ेस के कार्यान्वयन में पास कर सकते हैं। –

+1

मैं रणनीति पैटर्न के लिए इंटरफेस का उपयोग करता हूं। –

0

पैटर्न आर्किटेक्चर का विषय हैं। प्रतिनिधियों को कार्यान्वयन का मामला है।

सी # में, एक रणनीति पैटर्न लगभग हमेशा एक प्रतिनिधि का उपयोग करके लागू किया जाएगा।

+1

आईएमएचओ, इंटरफेस इस पैटर्न को लागू करने का एक और शानदार तरीका है। –

0

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

रणनीति पैटर्न पैटर्न के बजाय पॉलिमॉर्फिज्म के साथ बेहतर ढंग से कार्यान्वित किया जाता है क्योंकि पॉलिमॉर्फिक प्रेषण अधिक सुरुचिपूर्ण होता है।

2

डिजाइन पैटर्न सामान्यतः सामना की जाने वाली समस्याओं के लिए भाषा अज्ञेयवादी, उच्च स्तरीय समाधान हैं।

प्रतिनिधियों को .NET के लिए रणनीति पैटर्न के प्लेटफ़ॉर्म-विशिष्ट कार्यान्वयन में उपयोग किया जा सकता है, लेकिन ऐसे समाधान को लागू करने का एकमात्र तरीका नहीं है। के बजाय एक प्रतिनिधि द्वारा

public interface IStrategy 
{ 
    void DoStuff(...) 
} 

रणनीतियाँ तो इस इंटरफेस को लागू करने वर्गों के प्रतिनिधित्व की जाएगी:

एक वैकल्पिक समाधान की तरह एक अंतरफलक परिभाषित करने के लिए है।

प्रतिनिधि एक ठीक कार्यान्वयन अगर आप अपने रणनीति बहुत सरल होने की उम्मीद हो सकती है। कुछ भी यथोचित जटिल के लिए, इंटरफेस के रूप में रणनीतियों को लागू करने आप एक बहुत अधिक विकल्प देता है जब यह राज्य का ट्रैक, आदि

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