Abstract Factory
E173605
Abstract Factory is a creational design pattern that provides an interface for creating families of related or dependent objects without specifying their concrete classes.
All labels observed (3)
| Label | Occurrences |
|---|---|
| Abstract Factory pattern | 4 |
| Abstract Factory canonical | 2 |
| AbstractFactory | 1 |
Statements (53)
| Predicate | Object |
|---|---|
| instanceOf |
creational design pattern
ⓘ
design pattern ⓘ |
| alsoKnownAs | Kit ⓘ |
| applicableWhen |
a family of related product objects is designed to be used together
ⓘ
a system should be configured with one of multiple families of products ⓘ a system should be independent of how its products are created ⓘ you want to provide a library of products without exposing their implementations ⓘ |
| belongsTo |
Design Patterns: Elements of Reusable Object-Oriented Software
ⓘ
surface form:
Gang of Four design patterns
|
| commonUseCase |
GUI toolkits with multiple look-and-feel themes
ⓘ
cross-platform UI libraries ⓘ persistence layers with multiple database vendors ⓘ |
| consequence |
can increase number of classes in a system
ⓘ
can make supporting new kinds of products difficult ⓘ makes exchanging product families easy ⓘ promotes consistency among products ⓘ |
| definedIn | Design Patterns: Elements of Reusable Object-Oriented Software ⓘ |
| definesRoleOf |
AbstractFactory creates abstract products
ⓘ
Client uses only abstract interfaces ⓘ ConcreteFactory creates concrete products ⓘ |
| encourages | use of object composition over class inheritance for product families ⓘ |
| hasCategory | creational pattern ⓘ |
| hasUMLElement |
AbstractFactory interface or abstract class
ⓘ
AbstractProduct interfaces ⓘ Client class ⓘ ConcreteFactory classes ⓘ ConcreteProduct classes ⓘ |
| helpsWith |
configuring systems with multiple families of products
ⓘ
ensuring that products from the same family are used together ⓘ isolating concrete classes ⓘ supporting product variants ⓘ |
| introducedBy |
Erich Gamma
ⓘ
John Vlissides ⓘ Ralph Johnson NERFINISHED ⓘ Richard Helm ⓘ |
| languageParadigm | object-oriented programming ⓘ |
| oftenImplementedWith | Factory Method ⓘ |
| primaryIntent | provide an interface for creating families of related or dependent objects without specifying their concrete classes ⓘ |
| relatedTo |
Builder
ⓘ
Factory Method ⓘ Prototype ⓘ |
| supports |
creation of product families
ⓘ
encapsulation of object creation ⓘ enforcing consistency among related products ⓘ programming to interfaces not implementations ⓘ |
| typicalParticipants |
Abstract Factory
self-linksurface differs
ⓘ
surface form:
AbstractFactory
AbstractProduct ⓘ Client ⓘ ConcreteFactory ⓘ ConcreteProduct ⓘ |
| typicalStructureElement |
concrete factories implementing the factory interface
ⓘ
concrete products implementing product interfaces ⓘ factory interface with multiple creation methods ⓘ product interfaces representing abstract products ⓘ |
Referenced by (7)
Full triples — surface form annotated when it differs from this entity's canonical label.
Design Patterns: Elements of Reusable Object-Oriented Software
→
describesPattern
→
Abstract Factory
ⓘ
this entity surface form:
Abstract Factory pattern
this entity surface form:
AbstractFactory
this entity surface form:
Abstract Factory pattern