The Abstract Factory Pattern