Sto cercando diversi modi per garantire che ogni istanza di una determinata classe sia un'istanza identificabile in modo univoco.
Ad esempio, ho una Name
classe con il campo name
. Una volta che ho un Name
oggetto name
inizializzato su John Smith, non voglio essere in grado di creare un'istanza di un Name
oggetto diverso anche con il nome John Smith, o se si verifica un'istanza, voglio piuttosto che un riferimento all'oggetto originale venga restituito piuttosto di un nuovo oggetto.
Sono consapevole del fatto che un modo per eseguire questa operazione consiste nell'avere una factory statica che contiene uno Map
di tutti gli oggetti Name correnti e la factory verifica che un oggetto con John Smith come nome non esista già prima di restituire un riferimento a un Name
oggetto.
Un altro modo in cui mi viene in mente la testa è avere una mappa statica nella Name
classe e quando il costruttore viene chiamato lanciare un'eccezione se il valore passato per name
è già in uso in un altro oggetto, tuttavia sono consapevole del fatto che genera eccezioni in un costruttore è generalmente una cattiva idea .
Ci sono altri modi per raggiungere questo obiettivo?
I'm aware that one way of doing this is to have a static factory that holds a Map...
Quindi perché non vuoi farlo in questo modo?