Design pattern

in C#, Informatica, Programmazione

Design Patterns – Prototype

Tipologia: Creazionale

Frequenza di utilizzo: Media

Obiettivo: definire gli oggetti da creare utilizzando un’istanza prototipo, creando nuovi oggetti copiando l’istanza del prototipo.

Design Patterns - Prototype

Schema UML – Prototype

Componenti:

  • Prototype: dichiara l’interfaccia per poter effetture la clonazione (auto-clonazione)
  • Concrete Prototype: implementa l’operazione per effettuare la clonazione
  • Client: crea un nuovo oggetto richiedendo al prototipo di effettuare la clonazione (auto-clonazione)

Implementazione in C#

La prima classe da definire è la Prototype:

con la definizione del metodo per effettuare la clonazione degli oggetti. Si procede quindi con la definizione della classe Concrete Prototype che implementa la classe ColorPrototype:

con l’implementazione del metodo Clone (definito nella classe astratta). Il Client, o meglio il manager, sarà così definito:

Per poter utilizzare il Client necessario crearne un’istanza, aggiungere elementi che potranno essere recuperati tramite clonazione:

E’ da notare come il Client sia responsabile della generazione di un nuovo oggetto proprio effettuando la clonazione (invocando il metodo Clone).