This is a Structural Design Pattern
Inspired on github ochococo/Design-Patterns-In-Swift
The decorator pattern is used to extend or alter the functionality of objects at run- time by wrapping them in an object of a decorator class. This provides a flexible alternative to using inheritance to modify behaviour.
Class Diagram for Coffee Decorator example (@ochococo)
I implemented a similiar Decorator in Java, based in Design Patterns book by Head First. github:adagio/Starbuzz