我正在進入控制反轉,特別是使用Guice
和RoboGuice
對於Android,我有一個問題。控制反轉新對象創建
我有一個方法調用返回一個資源(實質上是一個XML或JSON字符串)。
public Resource getResource(){
// Some implementation details that call a web service and throw the result in a string...
String resource = ........
}
的Resource
類實際上只是一個包裹String
,所以我想這是有道理的在通過它在構造函數中,因爲它是一個Resource
對象的一個重要組成部分。
public class Resource{
Resource(String theXMLorJSON){
...
}
}
幾個問題:
- 如何構建在
getResource
調用一個新的Resource
?我認爲我想使用IoC而不是在方法中調用new
。 - 如果另一個類在構造函數中使用
Resource
,那麼在施工時需要動態String
時,如何使用Guice
容器構造它?我只是問了一個similar question,並且相信可能有一種使用Guice
來處理這個問題的具體方法。
非常感謝!
非常感謝您的回答。我也在弗吉尼亞州的阿靈頓,順便說一句。 – skaz
如果你不介意的話,還有幾個問題。 1)爲什麼鏈接頁面的「手工工廠」部分中的示例採用「提供者」而不是「CreditService」?不能只注入「CreditService」? 2)如果我有另一個類,在構造函數中使用'Resource'的'ResourceUser',並且'Resource'構造函數使用'String',那麼我該如何設置Guice中的'ResourceUser'?對不起,如果這是天真的... – skaz
這樣做是爲了確保工廠不改變'CreditService'的範圍。例如,'CreditService'可以是Web應用程序中的請求範圍,所以您需要確保每次調用工廠時都能獲得正確的實例。如果所有的依賴關係都是單例,你可以直接注入它們......但是你不應該在工廠中假設它。請參閱[注入提供商](http://code.google.com/p/google-guice/wiki/InjectingProviders)。 – ColinD