我有两个"模块"我希望PanelManager
和Panel
尽可能独立,因此我使用events
进行通信。这样,如果另一个模块正在运行,您可以独立运行每个模块,并且只需设置或删除监听器就可以插入或拔出模块。
PanelManager
模块在需要新面板时调度newPanel
事件,并侦听newPanelCreated
个事件。
Panel
模块会侦听newPanel
个事件,创建一个新面板并使用新面板newPanelCreated
调度{detail}
自定义事件。
为了实现这个目的,我可以用两种不同的方式设计Panel
模块:第一个是PanelFactory
类,它在实例化时设置监听器并创建Panel
类的实例。第二个只是一个Panel
类,在构造函数中有一个标志,所以如果用true
标志实例化它只是设置监听器,但是如果用false
标志实例化它充当常规Panel
。这样,同一个类可以同时充当 Factory 和 Panel 。
您会推荐哪种方法?有没有更好的方法来实现这一目标?
答案 0 :(得分:0)
我不会为构造函数使用flag参数(毕竟,构造函数应该没有副作用)并且不使用单独的工厂类。
相反,在Panel
类上创建一个初始化侦听器的方法。在newPanel
处理程序中,只需调用构造函数然后调用该方法
或者,使其像Panel.createWithListeners
这样的静态方法调用构造函数,然后设置监听器。这样做的好处是,您不会在同一个实例上多次意外调用init方法。
或者您完全删除该方法并直接从newPanel
事件设置侦听器,此后所有这些事件代码都是Panel
类和事件总线之间的(唯一?)接口所以它应该在一个地方。