GWT-EXT-事件发生后将小部件连接到特定ContentPanel的最佳方法是什么?
第一篇文章不伤害我:)
我正在使用带有通常的北,西,中,南面板的BorderLayout
。在西方的ContentPanel上,我有一棵树。如果发生事件(OnClick),我希望在ContentPanel中心显示一个特定的对话框。
对我来说最好的方法是什么?目前,我正在使用一个名为" returnPanel()"的函数,该函数返回中心的" ContentPanel"。在事件处理程序中,我将此函数称为(MainWindow.returnPanel()。add(myDialog))。
解决方案
操作方式直观且可行,但是由于应用程序的不同部分之间紧密耦合,因此在应用程序扩展时将开始引起麻烦。解决此问题的方法是MVC设计模式和观察者设计模式。
理想情况下,使用MVC模式,我们不希望任何窗口小部件"知道"任何其他窗口小部件。只有一个知道所有小部件的类,即Controller。每当一个窗口小部件需要向另一个窗口小部件发送消息/发出信号时,它就会将其告知Controller类,该类将消息以适当的方式中继到适当的窗口小部件。这样,这两个小部件就减少了功能,并且其中一个可以更改而不会破坏另一个。我们可能需要使用一个枚举来枚举控制器必须响应的所有可能的动作。
如果窗口小部件在事件发生时仅需要调用Controller,则可以简单地在其上调用一个恰当命名的(静态)方法并对其进行处理。但是,一旦需要向其他多个类通知事件,则最好使用Observer模式,该模式可让我们在不更改类的情况下向多个其他类发出信号。它只是在eventHandler中调用notifyPObservers()就是这样。有多少个侦听器以及它们是什么类型无关紧要。这样,我们还可以将类与其侦听器分离。即使仅Controller进行侦听,也建议使用该模式,因为它清楚地将"回调"代码与类中的其他代码分开了。
顺便说一句,这与GWT甚至与Java无关。