Official description of the Abstract Factory pattern
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
Relies on object composition. The creation part is implemented in methods exposed in the factory interface.
The intent is to create families of related objects without having to depend on their concrete classes.