Composite

Compose objects into tree structures to represent part-whole hierarchies. Composite
lets clients treat individual objects and composition of objects uniformly.
Applicability
- Need to represent part-whole hierarchies
- Need to be able to ignore the difference between composites and individuals.
Consequences
- Makes the client simple
- Makes it easy to add new kinds of components
- Hard to restrict components of a composite