AbstractFactory: Interface (Class) defines a unified behavioral mode, and implementing a class (subclass) implementation. Define a factory, the factory calls different subclasses based on incoming parameters