Шаблон декоратора в C ++ - PullRequest
10 голосов
/ 07 июня 2010

Может кто-нибудь привести пример шаблона проектирования Decorator в C ++? Я сталкивался с его Java-версией, но мне было трудно понять ее версию на C ++ (из примеров, которые я нашел).

Спасибо.

Ответы [ 3 ]

10 голосов
/ 07 июня 2010

Шаблоны дизайна Винса Хьюстона, несмотря на плохую разметку, имеют реализацию C ++ для большинства шаблонов дизайна в книге «Бригада четырех».

Нажмите для Декоратор .

Нет большой разницы с Java, кроме ручной обработки памяти, которую лучше обернуть умными указателями:)

8 голосов
/ 07 июня 2010

Я нашел сайт Создание источника довольно хорошим, когда дело доходит до , объясняющего различные шаблоны проектирования .

Шаблон проектирования Decorator содержит примеры C ++, такие как обзорный пример , " до и после " и пример с пакетом кодирование / декодирование * +1014 *.

1 голос
/ 29 октября 2013
#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();
}
...