Intent
Ensure a class only ever has one instance, and provide a global point of
access to it.
Applicability
- when there must be exactly one instance of a class
- when sole instance should be extensible by subclassing
Structure
[to do: diagram with Singleton]
Consequences
- reduced name space pollution
Implementation
- declare constructor as protected to guard against multiple singleton
instances
Uses in JHotDraw