2012-01-06 91 views
0

我正在使用MVP體系結構(或至少近似於一個)並具有呈現器的層次結構,並具有類似的嵌套視圖。爲了簡單起見,我會堅持前兩個級別:用杜松子酒將視圖注入其他視圖

AppPresenter/AppView在頂層。第二級的DocumentListPresenter/DocumentListView和TranslationPresenter/TranslationView。

這兩個二級視圖作爲窗口小部件添加到頂級視圖的面板上,但此時這是通過將兩個二級演示者插入頂級演示者完成的,然後讓頂級演示者通過它們通過setter方法對其視圖的看法。

這似乎有點迂迴的做事方式。如果沒有主持人蔘與,Gin可以將第二級視圖注入頂級視圖嗎?

+0

另一個想法是在頂級視圖的ui.xml中添加第二級視圖,但我不確定這樣做是否可以完成,同時仍然保持視圖與其相關聯的演示者之間的適當引用。 – 2012-01-06 00:50:18

回答

0

我設法得到一個小的改動的代碼吉斯本工作(覆蓋在擴展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()方法使顯示綁定一個單例en確保注入到另一個顯示中的顯示實現與演示者綁定的實例相同。