Simple Injector: klasy Factory, które muszą tworzyć klasy z zależnościami

Mam klasę fabryczną, która tworzy kilka różnych typów klas. Fabryka jest zarejestrowana w kontenerze. Jaki jest zalecany sposób tworzenia klas w fabryce, biorąc pod uwagę, że mają one również zależności. Wyraźnie chcę uniknąć zależności od kontenera, ale jeśli dodam te klasy, nie będą używać kontenera. na przykład

public class MyFactory
{
    public IMyWorker CreateInstance(WorkerType workerType)
    {
        if (workerType == WorkerType.A)
              return new WorkerA(dependency1, dependency2);

        return new WorkerB(dependency1);

    }
}

Pytanie brzmi: skąd wziąć te zależności.

Jedną z opcji może być uzależnienie ich od fabryki. na przykład

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);

    }
}

Innym może być rejestracja typów pracowników i uzależnienie fabryki, np.

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;

    }
}

W pierwszej opcji czuję się, jakbym wciągał zależności pracowników do fabryki. W drugiej opcji pracownicy są tworzeni podczas tworzenia fabryki.

Myśli?

questionAnswers(4)

yourAnswerToTheQuestion