使用Gin将视图注入其他视图

时间:2012-01-06 00:48:22

标签: gwt-mvp gin

我正在使用MVP架构(或至少近似一个)并且具有演示者的层次结构,具有类似的嵌套视图。为简单起见,我会坚持前两个级别:

顶层的AppPresenter / AppView。 DocumentListPresenter / DocumentListView和TranslationPresenter / TranslationView在第二级。

两个第二级视图作为小部件添加到顶级视图的面板中,但此时通过将两个二级演示者注入顶级演示者,然后让顶级演示者传递他们的视图来完成通过setter方法来看待它。

这似乎是一种迂回的做事方式。 Gin是否有可能将第二级视图注入顶级视图而不会让演示者参与其中?

1 个答案:

答案 0 :(得分:0)

我设法通过对guice代码的一个小改动(在我的本地类中重写了扩展AbstractPresenterModule来实现这个:

@Override
protected <D extends Display> void bindDisplay(Class<D> display, Class<? extends D> displayImpl)
{
   bind(display).to(displayImpl).in(Singleton.class);
}

我一直在使用的bindPresenter()方法将presenter绑定为单例,并调用bindDisplay()将显示接口绑定到其实现,但后者不是单例绑定,所以我最终得到了不同的实例(一个链接到演示者,另一个链接到包含的显示类)。

重写bindDisplay()方法以使显示绑定成为单例,可确保注入另一个显示的显示实现与演示者绑定的实例相同。