@Bert - (1) легко решается, если другие методы в классе терпят неудачу, если класс не инициализирован; (2) вы уже указали решение. В более сложных версиях этого шаблона я обычно вижу «инициализированный» логический элемент, отслеживающий это состояние, поскольку обычно инициализируется более одного поля.
еняемые классы - это здорово, но есть одна большая проблема, которую я не могу придумать, - это циклы.
class Friend {
Set<Friend> friends();
}
Как один из моделей «Я» имею Тебя как друга, который, в свою очередь, возвращает меня в друзья?
неизменность Этот класс из внешнего мира определенно должен быть неизменным. Внутреннее значение должно быть постоянным для целей проверки на равенство.