Interface for creating a product. Subclasses decide which class to create.
- Dynamic objects are created
- Object creation is delegated to subclasses
- Improves flexibility by encapsulation of object creation
- Abstract Factory: often implemented using Factory Methods
- Template Method: calls Factory methods
- Prototype: can be a Factory Method without subclassing