Простой Инжектор: фабричные классы, которые должны создавать классы с зависимостями
У меня есть фабричный класс, который создает пару разных типов классов. Фабрика зарегистрирована с контейнером. Каков рекомендуемый способ создания классов внутри фабрики, учитывая, что они также имеют зависимости. Я явно хочу избежать зависимости от контейнера, но если я добавлю новые классы, они победят.не использовать контейнер. например
public class MyFactory
{
public IMyWorker CreateInstance(WorkerType workerType)
{
if (workerType == WorkerType.A)
return new WorkerA(dependency1, dependency2);
return new WorkerB(dependency1);
}
}
Таким образом, вопрос в том, откуда мне взять эти зависимости.
Одним из вариантов может быть сделать их зависимыми от фабрики. например
public class MyFactory
{
private Dependency1 dependency1;
private Dependency2 dependency2;
public MyFactory(Dependency1 dependency1, Dependency2, dependency2)
{
this.dependency1 = dependency1; this.dependency2 = dependency2;
}
public IMyWorker CreateInstance(WorkerType workerType)
{
if (workerType == WorkerType.A)
return new WorkerA(dependency1, dependency2);
return new WorkerB(dependency1);
}
}
Другим может быть регистрация рабочих типов и создание этих зависимостей фабрики, например.
public class MyFactory
{
private IWorkerA workerA;
private IWorkerB workerB;
public MyFactory(IWorkerA workerA, IWorkerB, workerB)
{
this.workerA = workerA; this.workerB = workerB;
}
public IMyWorker CreateInstance(WorkerType workerType)
{
if (workerType == WorkerType.A)
return workerA;
return workerB;
}
}
При первом варианте я чувствую, что вывожу на фабрику зависимости рабочих. Со вторым вариантом рабочие создаются при создании фабрики.
Мысли?