1

仍然得到良好的依賴注入技術與矯枉過正的懸念。感謝讚賞。注入設置或加載一次全局查找?

我有一個應用程序,當它啓動時,從文件讀取設置。它可能是一個後來的數據庫,我寫了一個以依賴注入(Guice)方式加載設置的部分,這不是問題。這些設置不會隨着應用程序的正常使用而改變,但是在將來的版本中,我可能希望允許用戶從GUI更改這些設置。

下面是真正的問題:我應該如何讓代碼的各個部分訪問這些設置?有些設置在對象層次結構中非常重要,但父對象不需要知道它們。所以,我可以:

  1. 使用一個單,然後在構造函數中
  2. 查找適當的設置,通過不同的設置(或整個設置類)下的對象樹
  3. 創建得到由裝載工廠Guice模塊,然後用Factory.get()

我不知道#3比#1好多少......還是有更好的方法嗎?

注意:雖然我使用Guice,但這比「我該如何使用XXX框架」這個問題更像一個架構問題。所以即使你不瞭解Guice,也不要害怕回答。

回答

0

如果你使用CDI,你可以使用「@Singleton」來註釋你的Singleton類,並將這個類的一個對象注入到一個子類屬性中。
不知道它是如何在Guice。
我想使用注入機制來確保只有一個Property實例是最好的解決方案。
希望我能幫上忙。

+0

換句話說,你推薦選項1? – durron597 2013-02-21 18:25:34

+0

是的。這樣你確保只有一個Property對象。不知道如果2個用戶編輯2個不同的Property對象會發生什麼?由於這種情況,「全局屬性」是Singleton的默認示例。 – 2013-02-21 18:29:49