The Abstract Factory pattern
The main objective of the Abstract Factory pattern is to provide an interface to create families of related objects without specifying the concrete class. While the factory method defers the creation of the instance to the subclasses, the goal of Abstract Factory method is to create families of related objects:
As shown in the diagram, ConcreteFactory1
and ConcreteFactory2
are created from the AbstractFactory
interface. This interface has methods to create multiple products.
ConcreteFactory1
and ConcreteFactory2
implement AbstractFactory and create instances of ConcreteProduct1
, ConcreteProduct2
, AnotherConcreteProduct1
, and AnotherConcreteProduct2
.
ConcreteProduct1
and ConcreteProduct2
are in turn created from the AbstractProduct
interface, and AnotherConcreteProduct1
and AnotherConcreteProduct2
are created from the AnotherAbstractProduct
interface.
In effect, Abstract Factory patterns make sure that the client is...