Intent
Define an interface for creating an object, but leave it up to subclasses
to decide which object to create.
Applicability
- A class can't anticipate the class of objects it must create
- to connect "parallel" class hierarchies
Structure
[to do: diagram with Client, Creator, Product]
Consequences
- Enables frameworks to instantiate "abstract" classes
- establishes a relationship between objects
- requires creating subclass to change product
Implementation
Related Patterns
Uses in JHotDraw