【发布时间】:2012-03-20 11:53:15
【问题描述】:
当我的构造函数是纯参数到属性设置器时,我不确定将类需要正常工作的其他代码放在哪里。
例如,在 JavaScript 中,我正在编写一个 WindowMessageController 来处理 window 对象上的 message 事件。
为了让它工作,我必须在某处附加处理程序:
var controller = this;
this.applicableWindow.addEventListener("message", function(event) {
controller.messageAction(event.data);
}
这些东西正确属于哪里?
- 在构造函数中
- 在 .initialize() 方法中 - 引入时间耦合
- 在 WindowMessageControllerFactory.create(applicableWindow) 中 - 对于如此核心的代码段来说,这是一个相当遥远的地方。这意味着即使是这么小的班级也会被分成两部分。
- 在组合根本身中 - 这会在一直执行时增加其大小
- 在其他一些类 WindowMessageRouter 中,只有一个方法,即构造函数,使用此代码
编辑
这种情况看起来很特别,因为在应用程序中通常只有一个这样的控制器实例。然而,在更普遍的情况下,如果我创建一个 Button 类的实例,它会包裹一些 DOM <button /> 元素,那么答案是什么?突然一个
button = buttonFactory.create(domButtonEl);
似乎更有用。
【问题讨论】:
标签: dependency-injection factory-pattern constructor-injection abstract-factory