The role of the Decorator pattern is to provide a way of attaching new state and behavior to an object dynamically.
Decorator pattern takes an existing object and adds to it.
• The original object is unaware of any decorations.
• There is no one big feature-laden class with all the options in it.
• The decorations are independent of each other.
• The decorations can be composed together in a mix-and-match fashion.
- Client (Component and Decorator has a Client)
- Decorator - extends Component + usually has a ctor that take as parameter an IComponent
Stat _stat = new Stat();
Tag _tag = new Tag (_stat, "Chassis1", "Card2", "Port3" );
The Decorator pattern’s key feature is that it does not rely on inheritance for extending behavior.
• Implement any methods in the interface, changing the initial behavior of the component
• Add any new state and behavior
• Access any public members via the object passed at construction
- Decorator pattern fits well in the graphics world.
- I/O APIs of C#:
- web browsers and other mobile applications
- controls in Windows app