Я ищу различные способы гарантировать, что каждый экземпляр данного класса является уникально идентифицируемым экземпляром.
Например, у меня есть 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...
Так почему бы вам не сделать это таким образом?