Я ищу различные способы гарантировать, что каждый экземпляр данного класса является уникально идентифицируемым экземпляром.
Например, у меня есть Nameкласс с полем name. После того, как у меня есть Nameобъект с nameинициализацией для Джона Смита, я не хочу иметь возможность создавать экземпляр другого Nameобъекта также с именем, как у Джона Смита, или, если экземпляр имеет место, я хочу, чтобы ссылка на оригинальный объект передавалась обратно. чем новый объект.
Я знаю, что один из способов сделать это - иметь статическую фабрику, которая содержит Mapвсе текущие объекты Name, и фабрика проверяет, что объект с Джоном Смитом в качестве имени еще не существует, перед передачей ссылки на Nameобъект.
Другим способом, который я мог бы придумать, является наличие статической карты в Nameклассе, и когда конструктор вызывается, вызывая исключение, если переданное значение nameуже используется в другом объекте, однако я знаю, выбрасывать исключения в конструкторе вообще плохая идея .
Есть ли другие способы достижения этого?
I'm aware that one way of doing this is to have a static factory that holds a Map...Так почему бы вам не сделать это таким образом?