Java GWT MVP。如何使用事件总线?
在项目中,我使用MVP模式。我有2个视图和2个相应的演示者。从“Java GWT MVP。如何使用事件总线?,java,gwt,Java,Gwt,在项目中,我使用MVP模式。我有2个视图和2个相应的演示者。从“Presenter2”中,我想在“View1”中获取所选值。最好的方法是什么?我知道最好使用事件总线。但我必须创建两个事件和两个事件处理程序(当Presenter2需要从View1中选择值时,第一个事件将上升,它将在Presenter1中处理。第二个事件将在Presenter1中上升(如:new selectedValueEvent(值))通知演示者2所选值。因此演示者2将处理selectedValueEvent(value)并获取
Presenter2
”中,我想在“View1
”中获取所选值。最好的方法是什么?我知道最好使用事件总线。但我必须创建两个事件和两个事件处理程序(当Presenter2需要从View1
中选择值时,第一个事件将上升,它将在Presenter1中处理。
第二个事件将在Presenter1
中上升(如:new selectedValueEvent(值))
通知演示者2所选值。因此演示者2将处理selectedValueEvent(value)
并获取value
)。如果演示者需要获取所选值的时间点是当用户执行某个操作时,您将无法使用事件绕过该操作。(尽管如此,也许两位演讲者都可以对同一事件做出反应,所以不需要使用两个不同的演讲者?)
如果已知演示者何时需要获取值(工作流中已定义的步骤),则可以按如下方式进行操作:
保留对客户端工厂中视图的引用
:
public class ClientFactoryImpl implements ClientFactory {
private static final EventBus eventBus = new SimpleEventBus();
/* The views */
private static final SampleView sampleView = new SampleView();
....
public ClientFactoryImpl(){
eventBus.addHandler(ReleaseAddedEvent.type, sampleView);
....
}
// getter and setters
}
因此,在Presenter中,您可以获得对视图的引用:
SampleView视图=MyEntryPoint.getClientFactory().getSampleView();
,然后您可以从视图中调用一个方法,该方法返回所选值。是的,在我的应用程序中,我使用clientFactory。现在它的工作方式是您编写的(获取另一个(与此Presenter不对应)查看并调用此视图getSelected()方法)…但我认为在Presenter中创建引用以使其不对应于视图不是一个好主意..还是不好?如果您只是在Presenter中的方法中创建一个本地引用,这应该不是一个问题,因为只要执行此方法,本地引用就存在。