Define an interface for creating an object, but let subclasses decide which class to
instantiate. Factory Method lets a class defer instantiation to subclasses.
- A class can't anticipate the class of the objects it must create
- A class wants its subclasses to specify the objects it creates
- Need to delegate responsibility to helper subclasses
- Provides hooks for subclasses
- Connects parallel class heirarchies