design patterns - Make sure only corresponding implementations or childs of it will be handled -


निम्नलिखित स्थिति की कल्पना करें:

जैसा कि हैंडलर - बच्चे और कॉस्टयूमर - बच्चे एक दूसरे से मेल खाते हैं प्रत्येक हैंडलर में ऐसी कोई विधि होती है जो उपभोक्ता को लेती है।

क्या यह सुनिश्चित करने के लिए कोई अच्छा तरीका है कि एक हैंडलर - कुछ उदाहरण:

  • हैंडलर सब कुछ ले जाएगा

    कोड> कॉस्ट्यूमर

  • हैंडलर ए CostumerA और ग्राहकए लेगा लेकिन CostumerB या costumer
  • हैंडलरए केवल costumerAA

ले आएगा कुछ विचारों के साथ:

  • हैंडलर कार्यान्वयन की जांच करें अगर यह costumer है, तो यह जानता है
  • एक डिस्पैचर बनाएं जांच करता है

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

सटीक आवश्यकता, ऐसा लगता है कि केवल प्रत्येक वर्ग या उपवर्ग को पता होना चाहिए कि वह अन्य श्रेणी में संबंधित वर्ग या उपवर्ग है। मुझे इसके उपवर्गों को जानने की कोई आवश्यकता नहीं है

कई सरल कार्यान्वयन आपकी ज़रूरत के अनुरूप हो सकता है:

  • अपने वर्ग के कार्यान्वयन में प्रत्येक वर्ग की जांच अगर दूसरे वर्ग से मेल खाती है, या उपवर्ग (मुझे यकीन है कि आपका ओ ओ भाषा यह परीक्षण कर सकती है)।
  • प्रत्येक वर्ग अपने कन्स्ट्रक्टर में पंजीकृत सुपर क्लास में संबंधित वर्ग को कॉल करता है; प्रत्येक विधि में, सुपर क्लास की जांच करता है कि उस वर्ग के संबंधित वर्ग के बराबर (या एक उप-वर्ग) है।
  • सामान्य टाइपिंग (या टेम्पलेटिंग) यह भी सुनिश्चित कर सकता है कि, समय संकलित करने पर, कॉल करने वाले उपयुक्त उपवर्ग एक पैरामीटर

कृपया मुझे बताओ कि / जहां मैं गलत हूँ: -)


जैसा कि मार्क ने कहा था, शायद आपके पास डिज़ाइन गंध है ..: - ) दो पदानुक्रम जो एक-दूसरे को मिरर रखते हैं शायद सबसे अच्छी बात नहीं है ... यदि आप चाहें तो हम इसे तय करने में आपकी सहायता कर सकते हैं ...: -)


Comments

Popular posts from this blog

c# - How to capture HTTP packet with SharpPcap -

php - Multiple Select with Explode: only returns the word "Array" -

php - jQuery AJAX Post not working -