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