ब्रिज पैटर्न बस जिम्मेदारियों converging और उन्हें अलग करने की एक जोड़ी देख रहा है। मैं द गैंग ऑफ फोर (टीजीएफ) के उदाहरण का उपयोग करूंगा क्योंकि मुझे लगता है कि यह वास्तव में अच्छा है:
आपके पास दो उप-वर्गों के साथ एक विंडो इंटरफ़ेस है: एक्सविंडो (एक्स विंडो प्रबंधक के आधार पर) और पीएमविंडो (आधारित आईबीएम के प्रेजेंटेशन मैनेजर (पीएम) विंडो मैनेजर पर ... जिसे मैंने कभी नहीं सुना है)।
अर्थात्:
interface Window {}
class XWindow : Window {}
class PMWindow : Window {}
हमारे पारंपरिक विरासत दृष्टिकोण में जारी के साथ समस्या यह है अगर आप अपने मंच निर्भरता (यानी के अलावा किसी अन्य पहलू पर विंडो विशेषज्ञ, आप कुछ जिम्मेदारी है कि एक आप के लिए ओर्थोगोनल है कि समर्थन के लिए विरासत पेड़ बनाया), आपको पुल पैटर्न का उपयोग करने की आवश्यकता है, अन्यथा आपकी कक्षा पदानुक्रम गहराई से गहराई से बढ़ेगा। मुझे लगता है कि पुल को विरासत और संरचना के संयोजन के रूप में सोचने का एक अच्छा तरीका है।
यह सुंदर शब्द है। टीजीएफ उदाहरण पर वापस जा रहे हैं: क्या होगा यदि आप एक आइकन विन्डो और एक ट्रांजिएंटविंडो (एक ग्लास फलक की तरह कुछ) चाहते हैं। "आइकन बनाम क्षणिक" और "पीएम बनाम एक्स" की अवधारणा दो ऑर्थोगोनल विचार हैं, लेकिन वे दोनों एक ही विरासत के पेड़ पर उतरने की कोशिश कर रहे हैं।
interface Window {}
class XWindow : Window {}
class PMWindow : Window {}
interface IconWindow : Window {}
class XIconWindow : XWindow, IconWindow {}
class PMIconWindow : PMWindow, IconWindow {}
interface TransientWindow : Window {}
class XTransientWIndow : XWindow, TransientWindow {}
class PMTransientWindow : PMWindow, TransientWindow {}
पुल पैटर्न के साथ आप उन दो अलग होगा: पुल पैटर्न का उपयोग नहीं करते हैं, आप क्या करना होगा दो नए पहले से इनहेरिट इंटरफेस, और उनके नीचे वर्गों के एक धसान बनाने है दो विरासत के पेड़ पर जिम्मेदारियों:
interface Window {}
class IconWindow : Window {} //this class...
class TransientWindow : Window {} //and this one will keep a private reference to aWindowImp
interface WindowImp: Window {}
class XWindowImp : WindowImp {}
class PMWindowImp : WindowImp {}
बहुत क्लीनर, ज्यादा बेहतर जिम्मेदारी अलगाव, और बहुत आसान लिखने और उपभोग करने के लिए!
I मानते हैं कि यह डिज़ाइन समस्या और पुल ऑब्जेक्ट पेड़ की विषमता वास्तव में स्कैला में मिक्स-इन्स के डिजाइन को चलाने वाले कुछ मुद्दे थे। सी ++ की एकाधिक विरासत का उपयोग करके, आप स्थिर रूप से अपने विंडोिंग सिस्टम में किसी भी कार्यान्वयन को जोड़ देंगे। दूसरे शब्दों में, आपके पास गैर-पुल पैटर्न के समान प्रकार के प्रकार होंगे लेकिन वे शायद खाली कक्षाएं होंगी और आप निश्चित रूप से उन्हें अमूर्तता से संदर्भित कर सकते हैं, जो इसे उपभोग करने में काफी आसान बनाता है।
इस IMHO – DevZer0
एक विस्तारित कारखाने पैटर्न की तरह लग रहा है आप [कड़ी यहाँ विवरण दर्ज] देख सकते हैं [1] [1]: http://stackoverflow.com/questions/319728/when-do- आप-पुल-पैटर्न –
@mjavadlatify मैंने पहले उस लिंक को देखा था। दुर्भाग्य से यह मेरी मदद नहीं करता है। –