Creational Design Template
- AbstractFActory:
interfacedeclares abstract methods to create abstract products; - ConcreteFactories: classes that implement the methods to create a product variant;
- AbstractProducts:
interfacedeclares abstract methods for a set of distinct but related product variants that make up a family of products; - Products: classes that implement the methods to create concrete variants of the abstract product.
- Client: uses and is aware only of
interfaces;
- So we can say that
productA1andproductA2are the same product but in different variants.- Instead
productA1andproductB1are different products but of the same variant or family.- Furthermore,
AbastractProductproduces different products andConcreteFactoriesdetermine the variant or general family to produce.
---
title: AbstractFactory
---
classDiagram
Client --> AbstractFactory
Client --> AbstractProductsA
Client --> AbstractProductsB
AbstractFactory <|.. ConcreteFactory1
AbstractFactory <|.. ConcreteFactory2
AbstractProductsA <|.. ProductA1
AbstractProductsA <|.. ProductA2
AbstractProductsB <|.. ProductB1
AbstractProductsB <|.. ProductB2
ConcreteFactory1 --> ProductA1
ConcreteFactory2 --> ProductA2
ConcreteFactory1 --> ProductB1
ConcreteFactory2 --> ProductB2
<<interface>> AbstractFactory
<<interface>> AbstractProductsA
<<interface>> AbstractProductsB
Credits uml diagram mermaid
Modello di progettazione creazionale
- AbstractFActory:
interfacedichiara metodi astratti per creare prodotti astratti; - ConcreteFactories: classi che implementano i metodi per creare una variante di prodotti;
- AbstractProducts:
interfacedichiara metodi astratti per un'insieme di varianti del prodotto, distinti ma corellati che costituiscono una famiglia di prodotti; - Products: classi che implementano i metodi per realizzare varianti concrete, del prodotto astratto.
- Client: usa ed è a conoscenza solo delle
interface;
- Quindi possiamo dire che
productA1eproductA2sono lo stesso prodotto ma in varianti differenti.- Invece
productA1eproductB1sono prodotti diversi ma della stessa variante o famiglia.- In oltre
AbastractProductproduce prodotti diversi e leConcreteFactoriesdeterminano la variante o la famiglia generale da produrre.
---
title: AbstractFactory
---
classDiagram
Client --> AbstractFactory
Client --> AbstractProductsA
Client --> AbstractProductsB
AbstractFactory <|.. ConcreteFactory1
AbstractFactory <|.. ConcreteFactory2
AbstractProductsA <|.. ProductA1
AbstractProductsA <|.. ProductA2
AbstractProductsB <|.. ProductB1
AbstractProductsB <|.. ProductB2
ConcreteFactory1 --> ProductA1
ConcreteFactory2 --> ProductA2
ConcreteFactory1 --> ProductB1
ConcreteFactory2 --> ProductB2
<<interface>> AbstractFactory
<<interface>> AbstractProductsA
<<interface>> AbstractProductsB
Credits uml diagram mermaid
