Abstract Factory AKA Kit
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 should be hidden from clients
- when related classes should change together