Abstract Factory Design pattern