definition
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
Frequency of use: high
return to top
UML class diagram
return to top
participants
The classes and/or objects participating in this pattern are:
AbstractFactory (ContinentFactory)
declares an interface for operations that create abstract products
ConcreteFactory (AfricaFactory, AmericaFactory)
implements the operations to create concrete product objects
AbstractProduct (Herbivore, Carnivore)
declares an interface for a type of product object
Product (Wildebeest, Lion, Bison, Wolf)
defines a product object to be created by the corresponding concrete factory
implements the AbstractProduct interface
Client (AnimalWorld)
uses interfaces declared by AbstractFactory and AbstractProduct classes