Decorator pattern in C++

前端 未结 3 1422
情歌与酒
情歌与酒 2020-12-03 11:54

Can someone give me an example of the Decorator design pattern in C++ ? I have come across the Java version of it, but found it difficult to understand the C++ version of i

相关标签:
3条回答
  • 2020-12-03 12:02
    #include <iostream>
    using namespace std;
    
    class Computer
    {
    public:
        virtual void display()
        {
            cout << "I am a computer..." << endl;
        }
    };
    
    class CDDrive : public Computer
    {
    private:
        Computer* c;
    public:
        CDDrive(Computer* _c)
        {
            c = _c;
        }
        void display()
        {
            c->display();
            cout << "with a CD Drive..." << endl;
        }
    };
    
    class Printer : public Computer
    {
    private:
        CDDrive* d;
    public:
        Printer(CDDrive* _d)
        {
            d = _d;
        }
        void display()
        {
            d->display();
            cout << "with a printer..." << endl;
        }
    };
    
    int main()
    {
        Computer* c = new Computer();
        CDDrive* d = new CDDrive(c);
        Printer* p = new Printer(d);
    
        p->display();
    }
    
    0 讨论(0)
  • 2020-12-03 12:16

    I've found the website Sourcemaking to be a pretty good one when it comes to explaining different Design Patterns.

    The Decorator design pattern has C++ examples, such as an overview example, a "before and after", and an example with packet encoding/decoding.

    0 讨论(0)
  • 2020-12-03 12:17

    Vince Huston Design Patterns, even though its layout is poor, has C++ implementation for most design patterns in the Gang of Four book.

    Click for Decorator.

    There isn't much difference with Java, except the manual memory handling that you'd better wrap with smart pointers :)

    0 讨论(0)
提交回复
热议问题