Factory vs Multipurpose构造函数,用于在事件

时间:2016-10-14 09:46:05

标签: javascript events design-patterns module

我有两个"模块"我希望PanelManagerPanel尽可能独立,因此我使用events进行通信。这样,如果另一个模块正在运行,您可以独立运行每个模块,并且只需设置或删除监听器就可以插入或拔出模块。

PanelManager模块在​​需要新面板时调度newPanel事件,并侦听newPanelCreated个事件。

Panel模块会侦听newPanel个事件,创建一个新面板并使用新面板newPanelCreated调度{detail}自定义事件。

为了实现这个目的,我可以用两种不同的方式设计Panel模块:第一个是PanelFactory类,它在实例化时设置监听器并创建Panel类的实例。第二个只是一个Panel类,在构造函数中有一个标志,所以如果用true标志实例化它只是设置监听器,但是如果用false标志实例化它充当常规Panel。这样,同一个类可以同时充当 Factory Panel

您会推荐哪种方法?有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我不会为构造函数使用flag参数(毕竟,构造函数应该没有副作用)并且不使用单独的工厂类。

相反,在Panel类上创建一个初始化侦听器的方法。在newPanel处理程序中,只需调用构造函数然后调用该方法 或者,使其像Panel.createWithListeners这样的静态方法调用构造函数,然后设置监听器。这样做的好处是,您不会在同一个实例上多次意外调用init方法。

或者您完全删除该方法并直接从newPanel事件设置侦听器,此后所有这些事件代码都是Panel类和事件总线之间的(唯一?)接口所以它应该在一个地方。