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