Come si usa il modello di progettazione Decorator per qualcosa di diverso dai banali problemi giocattolo, in una gerarchia di classi profonde? Ad esempio, supponiamo di avere la classe
class Decorated
: public Foo, Bar, Baz
{
public:
void operation();
};
Lo decoreresti in questo modo
class Decorator
: public Decorated
{
void operation() { d.operation(); }
private:
Decorated d;
};
Il problema che sto avendo è che Decorated può avere molti metodi ereditati (da Foo, Bar e Baz) e il Decoratore ha bisogno di "reindirli" tutti al suo oggetto interno o lo stato dell'oggetto sarà diviso tra il decoratore e l'oggetto decorato. Come si può essere sicuri che un decoratore decori correttamente un altro oggetto e che non vengano chiamati metodi sul decoratore anziché decorati?