Both Factory Method
and Abstract Factory
keep the clients decoupled from the concrete types. Both create objects, but Factory
method uses inheritance whereas Abstract Factory
use composition.
The Factory Method
is inherited in subclasses to create the concrete objects(products) whereas Abstract Factory
provide interface for creating the family of related products and subclass of these interface define how to create related products.
Then these subclasses when instantiated is passed into product classes where it is used as abstract type. The related products in an Abstract Factory
are often implemented using Factory Method
.