ConcreteFactory
E679866
ConcreteFactory is a design pattern participant that implements the Abstract Factory interface to create specific families of related product objects.
Statements (34)
| Predicate | Object |
|---|---|
| instanceOf |
Creational design pattern element
ⓘ
Design pattern participant ⓘ |
| belongsToCategory | Creational patterns NERFINISHED ⓘ |
| benefit |
Isolates concrete classes from clients
ⓘ
Promotes consistency among products in the same family ⓘ |
| collaboratesWith |
AbstractFactory
NERFINISHED
ⓘ
ConcreteProduct ⓘ Product ⓘ |
| conformsTo | AbstractFactory interface contract ⓘ |
| creates |
ConcreteProduct objects
ⓘ
Families of related product objects ⓘ Objects without specifying their concrete classes to clients ⓘ |
| definedIn | Abstract Factory pattern structure diagrams ⓘ |
| defines | Methods for creating concrete products ⓘ |
| describedIn | Design Patterns: Elements of Reusable Object-Oriented Software NERFINISHED ⓘ |
| encapsulates | Creation of related product families ⓘ |
| ensures | Products created are compatible within the same family ⓘ |
| hasResponsibility | Instantiate concrete products that conform to an abstract product interface ⓘ |
| hides | Concrete product classes from client code ⓘ |
| implements | AbstractFactory interface NERFINISHED ⓘ |
| implementsMethod |
Factory methods for each abstract product type
ⓘ
createProductA ⓘ createProductB ⓘ |
| languageAgnostic | True ⓘ |
| oftenNamed |
ConcreteFactoryA
NERFINISHED
ⓘ
ConcreteFactoryB NERFINISHED ⓘ ConcreteFactoryX NERFINISHED ⓘ |
| participatesIn | Abstract Factory pattern NERFINISHED ⓘ |
| roleInPattern | Concrete factory ⓘ |
| supports | Variation of product families without changing client code ⓘ |
| typicalContext |
Cross-platform libraries with platform-specific product implementations
ⓘ
GUI toolkits with multiple look-and-feel families ⓘ |
| usedFor | Switching entire product families at runtime by changing factory instance ⓘ |
| usedIn | Object-oriented design NERFINISHED ⓘ |
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.