से क्या हैं एब्सट्रैक्ट फ़ैक्टरी और फ़ैक्टरी डिज़ाइन पैटर्न के बीच अंतर?:

फ़ैक्टरी

कल्पना कीजिए कि आप एक घर बना रहे हैं और आप एक दरवाजे के लिए बढ़ई के पास जाते हैं। आप दरवाजे और अपनी आवश्यकताओं के लिए माप देते हैं, और वह आपके लिए एक दरवाजे का निर्माण करेगा। इस मामले में, बढ़ई दरवाजों का कारखाना है। आपके विनिर्देश कारखाने के लिए इनपुट हैं, और दरवाजा कारखाने से आउटपुट या उत्पाद है।

सार कारखाना

अब, दरवाजे के उसी उदाहरण पर विचार करें। आप बढ़ई के पास जा सकते हैं, या आप प्लास्टिक के दरवाजे की दुकान या पीवीसी की दुकान पर जा सकते हैं। ये सभी डोर फैक्ट्रियां हैं। स्थिति के आधार पर, आप तय करते हैं कि आपको किस तरह के कारखाने से संपर्क करने की आवश्यकता है। यह एक एब्सट्रैक्ट फैक्ट्री की तरह है।

उस स्पष्टीकरण के अनुसार, निम्न कोड फ़ैक्टरी विधि या अमूर्त फ़ैक्टरी पैटर्न है?

class PaintShape
{
public:
    static PaintShape *createShapeObject( std::string shape );

    virtual void print() { std::cout << "print PaintShape"; }
};

class PaintTriangle : public PaintShape
{
public:
    PaintTriangle() {}
    virtual void print() { std::cout << "\nprint PaintTriangle"; }
};

class PaintRectangle : public PaintShape
{
public:
    PaintRectangle() {}
    virtual void print() { std::cout << "\nprint PaintRectangle"; }
};

PaintShape* PaintShape::createShapeObject( std::string shape )
{
    if( shape == "triangle" )
        return new PaintTriangle;
    else if( shape == "rectangle" )
        return new PaintRectangle;

    return new PaintShape;
};

class EndDeveloper
{
public:
    EndDeveloper()
    {
        std::string shape;
        std::cout << "\nWhat shape would you like? ";
        // Get input from the terminal.
        std::getline( std::cin, shape );

        PaintShape *p = PaintShape::createShapeObject( shape );
        p->print();

        std::cout << "\nWhat shape would you like? ";
        std::getline (std::cin, shape);

        PaintShape *s = PaintShape::createShapeObject( shape );
        s->print();
    }
};

इसे फ़ैक्टरी पद्धति और/या अमूर्त फ़ैक्टरी पद्धति में बदलने का तरीका क्या होगा?

-1
Aquarius_Girl 2 जुलाई 2020, 16:24

1 उत्तर

फ़ैक्टरी विधि केवल एक आइटम का उत्पादन करती है जबकि अमूर्त फ़ैक्टरी किसी भी तरह से संबंधित वस्तुओं का सबसेट उत्पन्न करती है।

आपके मामले में, आपके पास एक पैटर्न फ़ैक्टरी विधि है।

दूसरे शब्दों में बताई गई किसी बात को याद रखने की सलाह वास्तव में सभी के लिए कारगर नहीं होती है। मेरे लिए, उद्धरण से यह स्पष्ट नहीं है कि अंतर क्या है :) मैं आपको निम्नलिखित पुस्तकों को पढ़ने की सलाह दूंगा ताकि चीजों को उनके स्थान पर रखा जा सके:

  1. डिज़ाइन पैटर्न, "गैंग ऑफ़ फोर"। यह एक क्लासिक है।
  2. हेड फर्स्ट डिजाइन पैटर्न: ए ब्रेन-फ्रेंडली गाइड। यह समझने में आसान है।
0
Peter Mortensen 22 जुलाई 2020, 04:07