Sto cercando diversi modi per garantire che ogni istanza di una determinata classe sia un'istanza identificabile in modo univoco.
Ad esempio, ho una classe Name
con il campo name
. Una volta che ho un oggetto Name
con name
inizializzato in John Smith, non voglio essere in grado di istanziare un oggetto Name
diverso anche con il nome come John Smith, o se l'istanziazione ha luogo Voglio un riferimento all'oggetto originale da restituire anziché a un nuovo oggetto.
Sono consapevole che un modo per farlo è avere un factory statico che contiene un Map
di tutti gli oggetti Name correnti e il factory controlla che un oggetto con John Smith come nome non sia già esistito prima restituire un riferimento a un oggetto Name
.
Un altro modo in cui mi viene in mente è avere una mappa statica nella classe Name
e quando il costruttore è chiamato a lanciare un'eccezione se il valore passato per name
è già in uso in un'altra oggetto, tuttavia sono consapevole lanciare eccezioni in un costruttore è generalmente una cattiva idea .
Ci sono altri modi per raggiungere questo obiettivo?