Когда мои конструкторы являются чистыми установщиками аргументов в пользу свойств, я не уверен, куда поместить другой код, необходимый классу для правильной работы.
Например, в JavaScript я программирую WindowMessageController
, который обрабатывает message
события на объекте window
.
Чтобы это работало, я должен где-то прикрепить обработчик:
var controller = this;
this.applicableWindow.addEventListener("message", function(event) {
controller.messageAction(event.data);
}
Куда относится этот материал?
- в конструкторе
- в методе .initialize () - вводит временную связь
- в WindowMessageControllerFactory.create (applyWindow) - довольно отдаленное место для такого центрального фрагмента кода. Это означает, что даже такой маленький класс будет разбит на две части.
- в самом корне композиции - это увеличит его размер при выполнении все время
- в каком-то другом классе WindowMessageRouter, который будет иметь только один метод, конструктор, с этим кодом
EDIT
Этот случай кажется особенным, потому что в приложении обычно есть только один экземпляр такого контроллера. Однако в более обобщенном случае, что будет ответом, если я создаю экземпляры класса Button
, которые будут обернуты над некоторым элементом DOM <button />
? Внезапный
button = buttonFactory.create(domButtonEl);
кажется гораздо более полезным.