Ich suche nach verschiedenen Möglichkeiten, um sicherzustellen, dass jede Instanz einer bestimmten Klasse eine eindeutig identifizierbare Instanz ist.
Zum Beispiel habe ich eine NameKlasse mit dem Feld name. Wenn ich ein NameObjekt habe, das mit nameJohn Smith initialisiert wurde, möchte ich nicht in der Lage sein, ein anderes NameObjekt 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 Mapalle 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 NameObjekt.
Eine andere Möglichkeit, die mir auf den ersten Blick einfällt, besteht darin, eine statische Map in der NameKlasse zu haben und beim Aufruf des Konstruktors eine Ausnahme auszulösen, wenn der übergebene Wert für namebereits 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?