C ++中的装饰模式

时间:2010-06-07 08:41:14

标签: c++ design-patterns decorator

有人能给我一个C ++中Decorator设计模式的例子吗? 我遇到过它的Java版本,但发现很难理解它的C ++版本(从我发现的例子中)。

感谢。

3 个答案:

答案 0 :(得分:10)

Vince Huston Design Patterns,即使它的布局很差,也可以在Gang of Four书中为大多数设计模式实现C ++。

点击Decorator

与Java没有太大区别,除了你最好用智能指针包装的手动内存处理:)

答案 1 :(得分:8)

答案 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();
}