Abstract factory pattern is intended to provide an interface if we want to create families of related or dependent objects, but without explicitly specifying their concrete classes:
The preceding class diagram depicts the AbstractFactory class structure and a real-time implementation of an abstract factory pattern for an application that combines a different set of (heterogeneous) products from two different groups (<<Bank>> and <<Loan>>).
The benefits of this are the following:
- Isolating concrete classes
- Making exchanging product families easy
- Promoting consistency among products
Impact is such as; supporting new kinds of the product is difficult.