2013-08-05 41 views
0

你好,我目前正在一個xtext圖形編輯器,它就像Android中的UI編輯器。您可以通過在圖形視圖中拖放或在文本編輯器中手工編寫不同的UI組件。要麼修改將被序列化到文檔中。如何替換Guice的單例(數據源提供者)?

所以這裏出現了一個問題。由於我需要爲整個應用程序提供唯一的文檔源,我使用了一個單例類。但我讀過一些文章,建議避免使用單例,所以我想用依賴注入來替換單例類。它看起來像我必須通過許多類作爲參數傳遞文檔。

有沒有辦法讓Guice自動注入數據源提供程序? (既然已經的Xtext通過Guice集成我也想用它,而不是其他的依賴注入框架。)

Simple UML diagram here

謝謝!

+0

您能否提供您做出更改之前和之後的UML圖 – Imran

+0

@Imran我已經添加了UML圖,希望它對您有所幫助。 –

+0

如何在基類中創建靜態成員變量?您可以通過基類中公開的Setter(Not through Constructor)方法注入此依賴項。以這種方式,也可以很容易地對子類進行單元測試。 – Imran

回答

0

Guice本身支持Singleton範圍,它不會每次都創建一個新的實例。

@Singleton 
public class DatasourceProvider{ 
    /* everything here should be threadsafe! */ 
} 

所以這裏的吉斯需要照顧,只有一個實例,只要你會問注入DatasourceProvider它會返回同一個實例。

+0

嗯,我認爲'getInstance()'方法沒有區別。我真正想要的是使特定文件成爲注入依賴。 –

+0

@dark_chenshifei我沒有得到你想要達到的。你能否提供同樣的[SSCCE](http://sscce.org/)。 –

+0

對不起我的表達,但我添加了一個UML圖並修改了描述,希望它能幫助你理解。 –