Есть ли причина, по которой init()
и reset()
должны быть разными? В этом простом примере трудно понять, почему важно правило «ничего не создавать».
Кроме того, я думаю, что объекты должны быть полезны, как только они будут построены. Если есть причина - некоторая круговая зависимость или проблема наследования - объект имеет , который должен быть «инициализирован» после построения, я бы скрыл конструктор и инициализацию за статическим методом фабрики. (И, вероятно, для правильной меры перенесите код инициализации в отдельный объект конфигуратора.)
В противном случае вы рассчитываете на то, что вызывающие всегда будут вызывать как конструктор, так и init()
, и это нестандартный шаблон. У нас здесь есть какой-то старый, слишком полезный для выброса код, который делает это; это абстрактный класс диалога, и каждый раз, когда кто-то расширяет его, он забывает вызывать constructUI()
, а затем тратит 15 минут на размышления, почему его новый диалог пуст.