2010-06-29 27 views
3

我有GIN的朦朧認識,但有工作注入主持人等添加用戶類的所有主持人

我試圖注入一個自制的「用戶」級到我的所有主持人爲了獲得當前登錄的用戶。

我已將@Inject添加到我的User類的構造函數中,並將User添加到我的GIN模塊中......但除此之外,我完全迷失了方向。我是否將它綁定到我的應用程序演示者(嘗試過,但由於用戶未擴展AppPresenter而出現錯誤)?作爲一個單身?這甚至是正確的方式來傳遞這些數據嗎?

我討厭在這裏發表(沒有尋找免費的家庭作業),但我無法在其他任何地方找到一個體面的教程/例子。

非常感謝提前。

+0

無需爲問題行添加標籤。 – Will 2011-01-10 16:12:55

回答

2

我看到兩種可能性:

  • 注入與源是@Provides方法或Provider。但是,問題在於如何將當前登錄的用戶傳遞給這些方法,因爲全局狀態是一個禁忌。一個可能的解決方案是通過事件總線傳遞它,但在這一點上,它似乎有點擊敗DI的整個點(注入當前登錄的用戶是恕我直言,而不是DI的角色)。
  • 通過事件總線傳遞給用戶。創建一個在用戶登錄/更改時觸發的自定義事件,並且一些演示者監聽該事件(畢竟,並非所有演示者都必須知道當前用戶)。

我更喜歡和使用第二種方法 - 雖然DI很棒,但按照您描述的方式使用它似乎對我來說有點駭人聽聞。我強烈建議檢查一下Guice documentation - 杜松子酒基本上是Guice包裝很好與GWT合作,所以核心是一樣的。對於其他一些指針如何有效地使用DI,並且通常編寫可測試的代碼,我強烈建議Misko Hevery's blogguide to writing testable code他放在那裏(由Google內部使用)。