有人能给我一个C ++中Decorator设计模式的例子吗? 我遇到过它的Java版本,但发现很难理解它的C ++版本(从我发现的例子中)。
感谢。
答案 0 :(得分:10)
Vince Huston Design Patterns,即使它的布局很差,也可以在Gang of Four书中为大多数设计模式实现C ++。
点击Decorator。
与Java没有太大区别,除了你最好用智能指针包装的手动内存处理:)
答案 1 :(得分:8)
我发现Sourcemaking网站explaining different Design Patterns非常好。
Decorator设计模式包含C ++示例,例如overview example,“before and after”和example with packet encoding/decoding。
答案 2 :(得分:1)
#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();
}