design - How can this circular, bidirectional dependency be resolved? -


मेरे पास एक RequestHandler वर्ग और एक RequestListener वर्ग है। एक अनुरोधहैण्डलर एक RequestListener बनाता है और इसे खुद के लिए एक संदर्भ गुजरता है बदले में RequestListener RequestHandler पर विभिन्न प्रकार के अनुरोधों को संभालते हैं जब उन्हें संसाधित किया जाता है (उदाहरण के लिए handleTypeARequest (), handleTypeBRequest () आदि)। दुर्भाग्य से, RequestHandler भी requestListener पर तरीकों को कॉल करता है (जैसे processNextRequest ()), इसलिए मेरे पास एक परिपत्र निर्भरता है:

  class RequestHandler {RequestListener requestListener; ...} वर्ग RequestListener {RequestHandler अनुरोधहैंडलर; ...}  

इसका मतलब है कि दोनों के बीच सख्त युग्मन और आमतौर पर कोड गंध माना जाता है।

एक समाधान विभिन्न ऑब्जेक्ट्स का उपयोग करने के लिए प्रत्येक विभिन्न तरीकों के बजाय अनुरोध अनुरोधकर्ता, अनुरोध किए जाने पर, एक अनुरोध पर कार्रवाई कर सकता है और इसके लिए कुछ ऑब्जेक्ट ऑब्जेक्ट वापस लौटा सकता है। दुर्भाग्यवश, मैं वास्तव में इस दृष्टिकोण को पसंद नहीं करता, क्योंकि अधिक वस्तुएं और कक्षाओं की अतिरिक्त जटिलता और भाग के कारण प्रदर्शन के मुद्दों (जो यहां पर है) के भाग में; कॉलिंग हैंडलएंडएंडएंडेस्ट () तरीके से अनुरोधहैंडलर सीधे ऑब्जेक्ट का एक समूह बनाने से काफी तेज है और संभवत: बफ़र को बनाए रखने तक आवश्यक भी हो।

क्या इस समस्या का कोई अन्य समाधान है, और भी यह वास्तव में एक समस्या है?

हाँ, क्या यह वाकई एक समस्या है? < / P>

ऐसा लगता है जैसे आप ने कहा, कि अभिभावक और लेफ्टिनेंट; -> बच्चे के साथ समस्या है, जहां दोनों एक-दूसरे के संदर्भ में हैं मुझे विश्वास नहीं है कि यहां वास्तव में एक समस्या है।


Comments

Popular posts from this blog

wpf - Line breaks and indenting for the XAML of a saved FlowDocument? -

gtk - Python Window Resize -

c# - read full xml file data over tcp -