2012-04-16 13 views
5

मेरे पास बहुत सारे नियंत्रण के साथ एक जीयूआई एप्लीकेशन है। उनमें से अधिकांश भाग में घटनाएं होती हैं और विरोधाभास प्रत्येक के लिए तार्किक रूप से वायर्ड होते हैं। उदाहरण के लिए, मेरे पास 5 कॉम्बोबॉक्स हैं। यदि मैं cb1 और cb3 में cb2 में कुछ उपलब्ध चुनना है तो इसके कुछ उपलब्ध मूल्यों की सूची बदलनी चाहिए। यदि मैं cb2 और ch4 में कुछ चुनता हूं, तो cb5 को इसके उपलब्ध मानों की अपनी सूची लोड करनी होगी। वेब में पाए गए सभी लेखों का कहना है कि मुझे इस मामले में मध्यस्थ पैटर्न का उपयोग करना चाहिए। लेकिन इन सभी लेखों में मध्यस्थ - एक भगवान वर्ग की तरह कुछ है, जो सभी नियंत्रणों के बारे में सब कुछ जानता है और निर्णय लेता है कि कुछ घटनाओं के मामले में क्या किया जाना चाहिए। यदि मेरे पास 5-6 नियंत्रण हैं - सबकुछ ठीक है। लेकिन अगर मेरे पास 20 या 40 नियंत्रण की तरह कुछ है? मुझे लगता है कि मध्यस्थ वर्ग इस मामले में एक राक्षस बन जाएगा। इसके साथ कुछ करना मुश्किल होगा (संशोधित करें, या नई कार्यक्षमता जोड़ें)।उपयोग करने के लिए कौन सा डिज़ाइन पैटर्न (मुझे मध्यस्थ पैटर्न की तरह कुछ चाहिए)?

क्या कोई अन्य पैटर्न है, या मध्यस्थ पाथेरन के अच्छे उदाहरण हैं, जो इस स्थिति को हल करने में मदद करेंगे?

पीएस: क्षमा करें अगर इस विषय पर पहले से ही मौजूदा प्रश्न हैं - एक ही नाम के साथ बहुत सारे प्रश्न हैं, कि मुझे इन सभी विषयों से वास्तव में कुछ ढूंढना इतना आसान नहीं है।

+2

वास्तव में 20-40 नियंत्रण बहुत जटिल मध्यस्थ हो सकता है। हालांकि, मध्यस्थ की स्पष्ट ज़िम्मेदारी है, जो कि कई वर्गों पर तर्क फैलाने से समझना आसान है। * आपके प्रश्न में लाल झंडा * जोखिम नहीं है 20-40 नियंत्रणों के कारण ईश्वर-वर्ग का, बल्कि एक जीयूआई डिज़ाइन जो पहले स्थान पर 20-40 नियंत्रणों की अनुमति देता है। – Fuhrmanator

+0

** फूहरमेटर **, मेरे पास कुछ bussines के साथ काम करने के लिए एक बड़े रूप की स्थिति है एस दस्तावेज (चालान, अनुबंध और इतने पर)। इसलिए, ऐसे कई सारे क्षेत्र हैं, जिन्हें उपयोगकर्ताओं के साथ काम करना है। उपयोगकर्ताओं के लिए जानकारी की एक स्क्रीन के साथ काम करना अधिक सुविधाजनक है। तो, अगर मैं कुछ कहने की कोशिश करूंगा "ठीक है, अब आपके पास 3 \ 5 रूप \ स्क्रीन \ विंडोज़ होंगे। इस जानकारी को पहले में भरें, और दूसरी जानकारी उस जानकारी में भरें।" उपयोगकर्ताओं को कुछ अन्य डेवलपर \ कंपनी मिल जाएगी, बल्कि वहां आदतों को बदल दें। और, वैसे भी, यह विषय किसी अन्य विषय के लिए है, मुझे लगता है :) –

उत्तर

2

मध्यस्थ वास्तव में यहां सही विकल्प है, हालांकि ओबेरवर पैटर्न का उपयोग करने के लिए वैकल्पिक विकल्प है जो आपको तर्क को अलग रखने की अनुमति देगा। (सीबी 2 सीबी 1 देखता है और aproperly प्रतिक्रिया करता है, cb3-> cb2 आदि)।

ओबेरवर पैटर्न के साथ आपको एक समय में केवल 2 नियंत्रण लिंक करना होगा, यह श्रृंखला की तरह है।

0

Mediator pattern - Wiki

विकिपीडिया से हैं लेकिन यह आसान है और यह आसान समझने के लिए बनाता है।

जब मैं पैटर्न का अध्ययन करता था तो यह कोड सबसे अच्छा था। अभी तक कुशल द्वारा सरल ... और हाँ के लिए क्या आप, मैं एक मध्यस्थ पैटर्न

0

उपयोग रणनीतियों Strategy Pattern के रूप में विभिन्न कार्यों का उपयोग करें और मध्यस्थ से एक निश्चित रणनीति आह्वान करता हूँ का वर्णन कर रहे हैं ताकि आप केवल होगा यदि आपको कल अधिक नियंत्रक जोड़ने की आवश्यकता है तो कोड की कुछ पंक्तियों को बदलने की आवश्यकता है।

1

कस्टम घटकों (JComponent या JPanel को विस्तारित) में एकत्रित घटकों को समूहित करने का प्रयास करें। ये कस्टम घटक अपने बच्चों की घटनाओं को सुनते हैं और अन्य बच्चों को आवश्यकतानुसार अपडेट करते हैं (-> वे मध्यस्थ बन जाते हैं)। कस्टम घटक भी अपनी खुद की कस्टम घटनाओं को आग लगा सकते हैं और इस प्रकार अपने माता-पिता मध्यस्थ को सूचित कर सकते हैं।

0

gof पुस्तक का कहना है:।

"... संबंधित पैटर्न

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

सहकर्मी पर्यवेक्षक (2 9 3) पैटर्न का उपयोग करके मध्यस्थ के साथ संवाद कर सकते हैं। ... "।

मैं संदेह है कि पर्यवेक्षक और या तो मध्यस्थ या मुखौटा का एक संयोजन में अच्छी तरह से काम करेगा।

याद डिज़ाइन पैटर्न के गुणों में से एक है कि कि हर बार जब आप एक को लागू वे अलग हैं।

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