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 it (from the examples I found).
Thanks.
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.
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 :)
#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();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With