Design pattern

in C#, Informatica, Programmazione

Design Patterns – Factory Method

Tipologia: Creazionale

Obiettivo: viene definita un’interfaccia per la creazione di oggetti. Le sotto-classi possono decidere quale classe istanziare. E’ possibile differire la creazione delle sottoclassi

Frequenza di utilizzo: Alta

factory - Diagramma UML

Diagramma UML – Factory

Componenti:

  • Creator: contiene il metodo factory per la creazione di oggetti di tipo Product. Può anche definire un’implementazione predefinita per il metodo factory che restituisce un ConcreteProduct predefinito
  • ConcreteProduct: implementa l’interfaccia Product
  • Product: definisce l’interfaccia degli oggetti concreti che il metodo factory genera
  • ConcreteCreator: esegue l’override del metodo factory per la creazione dell’instanza del ConcreteProduct.

Implementazione in C#

La prima classe è la classe Product:

ovvero l’interfaccia della classe astratta che verrà implementata dal ConcreteProduct:

Proseguiamo con la definizione della classe astratta Creator:

con al suo interno la definizione (sempre astratta del metodo factory). Non rimane che definire la classe concreta per il Creator, che implementa il metodo factory:

Si può notare come la classe Creator contenga al suo interno la lista di oggetti creati.