Immagina un'interfaccia semplice Controller (come nel controllo di processo). Ho alcune classi concrete, diciamo PIDController , che la implementano. Ho anche alcune classi di decoratori che estendono queste classi in qualche modo, diciamo ITAETuningDecorator .
Ora immagina che una classe FloodGate abbia un campo Controller privato. Mi piacerebbe, dall'esterno e in fase di runtime, allegare al Controller in FloodGate a ITAETuningDecorator . Come posso farlo? Non ho accesso al campo dall'esterno e ovviamente il decoratore ha bisogno di un riferimento al controller originale da costruire.