Szukam różnych sposobów, aby upewnić się, że każda instancja danej klasy jest instancją jednoznacznie identyfikowalną.
Na przykład mam Nameklasę z polem name. Gdy mam już Nameobiekt z namezainicjalizowaną wersją dla Johna Smitha, nie chcę być w stanie utworzyć instancji innego Nameobiektu, również o nazwie John Smith, lub jeśli wystąpi instancja, chcę raczej przekazać odwołanie do obiektu oryginalnego niż nowy obiekt.
Wiem, że jednym ze sposobów jest posiadanie statycznej fabryki, która przechowuje Mapwszystkie bieżące obiekty Name, i fabryka sprawdza, czy obiekt z Johnem Smithem, ponieważ nazwa nie istnieje, przed przekazaniem odwołania do Nameobiekt.
Innym sposobem, w jaki mogłem pomyśleć z góry, jest posiadanie statycznej mapy w Nameklasie i gdy wywoływany jest konstruktor, zgłaszający wyjątek, jeśli przekazywana wartość namejest już używana w innym obiekcie, jednak zdaję sobie sprawę z wyjątków w konstruktorze jest ogólnie złym pomysłem .
Czy istnieją inne sposoby osiągnięcia tego?
I'm aware that one way of doing this is to have a static factory that holds a Map...Dlaczego więc nie chcesz tego zrobić?