Intent
Encapsulate and hide related implementation classes. Enable to create objects
without specifying class names.
Applicability
- when there is a need for configurable subsystems
- when implementation classes shoudl be hidden from clients
- when related classes should change together
Structure
[todo: diagram with Factory, Client]
Consequences
- hides concrete implementation classes
- factory can be hard to extend
Implementation
- configuring the factory object
- configurable abstract factories
- maintains product name, product class pairs
Uses in JHotDraw