STRUCTURAL
Decorator
Aggiungere responsabilità aggiuntive a un oggetto dinamicamente. I decorator forniscono un'alternativa flessibile all'ereditarietà per estendere funzionalità.
Esempi di Codice
Decorator per Coffee Shop
Aggiunta dinamica di ingredienti extra a bevande con calcolo del prezzo.
JAVASCRIPT
Loading...
Decorator per Data Streams
Aggiunta di funzionalità come compressione e crittografia a stream di dati.
JAVASCRIPT
Loading...
Esempi nel Mondo Reale
Java I/O streams - BufferedReader, FileReader, etc.
Middleware in web frameworks - logging, authentication, caching
UI components - scrollbars, borders, shadows
Text formatting - bold, italic, underline
HTTP requests - retry logic, caching, logging
Quando Usarlo
Quando vuoi aggiungere responsabilità a oggetti singoli dinamicamente
Quando l'ereditarietà non è praticabile (troppi comportamenti da combinare)
Quando vuoi che le responsabilità siano revocabili
Quando estendere funzionalità tramite sottoclassi è impraticabile
Quando NON Usarlo
Quando hai bisogno di modificare l'interfaccia dell'oggetto
Quando la catena di decorator diventa troppo complessa
Quando bastano semplici flag booleani per configurare comportamenti
Pattern Correlati