CREATIONAL

Prototype

Specificare i tipi di oggetti da creare usando un'istanza prototipale e creare nuovi oggetti copiando questo prototipo.

Il Problema

Creare nuovi oggetti identici o simili a oggetti esistenti può essere costoso. Inoltre, il codice non dovrebbe dipendere dalle classi concrete degli oggetti da copiare.

La Soluzione

Delegare il processo di clonazione agli oggetti stessi. Dichiarare un'interfaccia comune per tutti gli oggetti che supportano la clonazione.

Struttura

Prototype interface con metodo clone(), ConcretePrototype che implementa clone(), e client che clona invece di creare nuove istanze.

Partecipanti:
Prototype - dichiara l'interfaccia per clonare se stesso
ConcretePrototype - implementa l'operazione di clonazione
Client - crea nuovi oggetti chiedendo a un prototipo di clonarsi
Esempi di Codice

Prototype per Clonazione Oggetti

Sistema di clonazione per configurazioni di gioco.

JAVASCRIPT
Loading...

Prototype con Object.create (JavaScript)

Approccio nativo JavaScript per prototypal inheritance.

JAVASCRIPT
Loading...
Esempi nel Mondo Reale
JavaScript Object.create() - creazione di oggetti da prototipi
Game Development - clonazione di nemici, armi, power-up con statistiche simili
Editor grafici - duplicazione di forme, simboli, template
Configuration Management - clonazione di configurazioni base per ambienti diversi
Document Templates - clonazione di template email, report, contratti
Quando Usarlo
Quando il costo di creazione di un nuovo oggetto è maggiore della clonazione
Quando vuoi evitare gerarchie di factory
Quando le istanze di una classe possono avere solo poche combinazioni di stato
Quando vuoi nascondere la complessità della creazione al client
Quando NON Usarlo
Quando la clonazione è complessa (oggetti con riferimenti circolari)
Quando gli oggetti non hanno molte proprietà da copiare
Quando deep cloning è costoso o difficile da implementare