Singleton

Ensure a class only has one instance, and provide a global point of access to it.
Applicability
- Need exactly one instance of a class and a well-known access point
- Need to have the sole instance extensible by subclassing
Consequences
- Need controlled access
- Reduce name space
- Permits refinement of operations and representation
- More flexible than static class operators