Использование Dagger для внедрения зависимостей в конструкторы
Так что я'м в настоящее время редизайн моего приложения Android для использованияКинжал, Мое приложение большое и сложное, и недавно я столкнулся со следующим сценарием:
Объект A требует специального экземпляра DebugLogger, который является идеальным кандидатом для внедрения. Вместо того, чтобы обойти регистратор, я могу просто ввести его через A 'конструктор Это выглядит примерно так:
class A
{
private DebugLogger logger;
@Inject
public A(DebugLogger logger)
{
this.logger = logger;
}
// Additional methods of A follow, etc.
}
Пока это имеет смысл. Однако, A должен быть построен другим классом B. Несколько экземпляров A должны быть созданы, поэтому следуя Dagger 'S способ делать вещи, я просто вводитьProvider<a></a>
в Б:
class B { private Provider
<a> aFactory; @Inject public B(Provider</a><a> aFactory) { this.aFactory = aFactory; } } </a>
@Inject
public A(DebugLogger logger, int amount)
{
...
}
(Somewhere in B):
A inst = aFactory.get();
inst.setAmount(5);
inst.setFrequency(7);
inst.doConstructionThatRequiresAmountAndFrequency();
class A
{
@Inject
public Provider loggerProvider;
private DebugLogger logger;
public A(int amount, int frequency)
{
logger = loggerProvider.get();
// Do fancy things with amount and frequency here
...
}
}
Есть ли способ лучше? Я что-то упускаю из-за того, как работает Dagger?