2017-05-11 45 views
6

आज मेरी दुविधा यह समझने की कोशिश से उत्पन्न होती है कि रणनीति और ब्रिज पैटर्न को कैसे कार्यान्वित किया जा सकता है, इस पर ओवरलैपिंग क्यों हो रही है।डिज़ाइन पैटर्न - रणनीति और पुल (डिज़ाइन में ओवरलैप)

यहाँ अब यहाँ ब्रिज पैटर्न (एक अमूर्त से एक क्रियान्वयन सार संक्षेप)

// Shapes object structure will not be concerned how they draw themselves 
public abstract class Shape { 
    protected DrawAPI drawAPI; 

    protected Shape(DrawAPI drawAPI){ 
    this.drawAPI = drawAPI; 
    } 
    // This could also be put in the subcla 
    public void draw() { 
    drawAPI.drawCircle(radius,x,y); 
    } 
} 

है रणनीति पैटर्न है - एक वर्ग व्यवहार या अपने एल्गोरिथ्म रन टाइम पर बदला जा सकता है। एक कैलकुलेटर अपने परिचालन को एक रणनीति

public class Calculator{ 
    private Strategy strategy; 

    public Calculator(Strategy strategy){ 
    this.strategy = strategy; 
    } 

    public int executeStrategy(int num1, int num2){ 
    return strategy.doOperation(num1, num2); 
    } 
} 

इन दोनों पैटर्न में कार्यक्षमता को समाहित करने वाली रणनीति वस्तुओं को छोड़ना शामिल है। ब्रिज पैटर्न (स्ट्रक्चरल) और स्ट्रैटजी पैटर्न (व्यवहार) के बीच स्पष्ट अंतर के साथ कृपया मदद करें। मेरे पास एक और भ्रम है कि वे ज्ञान के विभिन्न छतरी के नीचे हैं।

+1

[रणनीति बनाम ब्रिज पैटर्न] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/5863530/strategy-vs-bridge-patterns) –

+1

http://stackoverflow.com/questions/5863530/strategy-vs -ब्रिज-पैटर्न, http://stackoverflow.com/questions/464524/what-is-the-difference-between-the-bridge-pattern-and-the-strategy-pattern – Andrew

+0

रणनीति व्यवहार पैटर्न है और पुल संरचनात्मक पैटर्न है । Http://stackoverflow.com/questions/464524/what-is-the-difference-between-the-bridge-pattern-and-the-strategy-pattern –

उत्तर

1

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

3

आपके उदाहरण में मैं इन दो पैटर्न के बीच थोड़ा ओवरलैपिंग देखता हूं।

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

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

0

पुल का उपयोग घटक को समाहित करने और कुछ अन्य इंटरफ़ेस का पर्दाफाश करने के लिए किया जाता है। आप आमतौर पर एक पुल का उपयोग करते हैं जब आप उस घटक का उपयोग कर रहे होते हैं जिसमें जीवन चक्र होता है जिसे आप नियंत्रित नहीं करते हैं। यह पुल के कार्यान्वयन के लिए आपके सॉफ्टवेयर की निर्भरता को सीमित करता है।

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

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