0

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

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

两个二级视图作为小部件添加到顶级视图的面板中,但目前这是通过将两个二级演示者注入顶级演示者,然后让顶级演示者将其视图传递给其视图来完成的通过setter方法。

这似乎有点迂回的做事方式。Gin 是否可以在完全不涉及演示者的情况下将二级视图注入顶级视图?

4

1 回答 1

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() 方法将演示者绑定为单例,并调用 bindDisplay() 将显示接口绑定到其实现,但后者不是单例绑定,所以我最终得到了不同的实例(一个链接到演示者,另一个链接到包含的显示类)。

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

于 2012-01-09T07:59:20.113 回答