Я вхожу в инверсию управления, в частности, используя 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
в конструкторе, как я могу использовать контейнерGuice
для его построения, когда мне нужно динамическоеString
во время строительства? Я просто спросил similar question и считаю, что может быть конкретный способ справиться с этим, используяGuice
.
Большое спасибо!
Большое спасибо за ответ. Я также в Арлингтоне, штат Вирджиния, кстати. – skaz
Еще пару вопросов, если вы не возражаете. 1) Почему в разделе «Фабрики по рукам» на странице, которую вы связываете, используется «поставщик» вместо «Кредитсервис»? Не удалось ли ввести «Кредитсервис»? 2) Если у меня есть другой класс, ResourceUser, который принимает «Resource» в конструкторе, а конструктор 'Resource' принимает' String', как мне настроить настройку 'ResourceUser' с помощью Guice? Извините, если это наивно ... – skaz
Это сделано, чтобы гарантировать, что завод не изменит область действия «Кредитсервис».Например, «CreditService» может быть запрошенным в веб-приложении, поэтому вам нужно убедиться, что вы получаете правильный экземпляр при каждом вызове фабрики. Если все зависимости являются одиночными, вы можете просто вводить их напрямую ... но вы не должны предполагать, что на заводе. См. [Поставщики инъекций] (http://code.google.com/p/google-guice/wiki/InjectingProviders). – ColinD