Ich suche nach verschiedenen Möglichkeiten, um sicherzustellen, dass jede Instanz einer bestimmten Klasse eine eindeutig identifizierbare Instanz ist.
Zum Beispiel habe ich eine Name
Klasse mit dem Feld name
. Wenn ich ein Name
Objekt habe, das mit name
John Smith initialisiert wurde, möchte ich nicht in der Lage sein, ein anderes Name
Objekt auch mit dem Namen John Smith zu instanziieren, oder wenn eine Instanziierung stattfindet, möchte ich, dass ein Verweis auf das ursprüngliche Objekt eher zurückgegeben wird als ein neues Objekt.
Mir ist bewusst, dass eine Möglichkeit dazu darin besteht, eine statische Factory zu haben, die Map
alle aktuellen Namensobjekte enthält, und die Factory prüft, ob ein Objekt mit dem Namen John Smith noch nicht vorhanden ist, bevor sie einen Verweis auf a zurückgibt Name
Objekt.
Eine andere Möglichkeit, die mir auf den ersten Blick einfällt, besteht darin, eine statische Map in der Name
Klasse zu haben und beim Aufruf des Konstruktors eine Ausnahme auszulösen, wenn der übergebene Wert für name
bereits in einem anderen Objekt verwendet wird. Allerdings sind mir Ausnahmen bekannt in einem Konstruktor ist in der Regel eine schlechte Idee .
Gibt es andere Möglichkeiten, dies zu erreichen?
I'm aware that one way of doing this is to have a static factory that holds a Map...
Warum willst du es nicht so machen?