Heim >Backend-Entwicklung >C++ >Wie kann die Abhängigkeitsinjektion das Problem vieler Abhängigkeiten in einer Factory-Methode lösen?
Factory-Methoden mit Abhängigkeitsinjektion und Umkehrung der Kontrolle
Frage:
Wenn Factory-Methoden unterschiedliche Objekte erstellen, müssen sie eine große Anzahl übergebener Abhängigkeiten verarbeiten.
Problem:
Die Verwendung von Switch-Case-Anweisungen in Fabriken stinkt nach schlechtem Code. Es führt zu Abhängigkeiten in der Fabrik selbst und erschwert deren Erweiterung.
Lösung: Dependency-Injection-Strategiemuster
Schnittstelle:
Definieren Sie Schnittstellen für Autofabriken und Autostrategien, um die Fahrzeugerstellung von der konkreten Umsetzung zu entkoppeln.
<code>public interface ICarFactory { ICar CreateCar(); bool AppliesTo(Type type); } public interface ICarStrategy { ICar CreateCar(Type type); }</code>
Fabrik:
Implementieren Sie separate Fabriken für jeden Fahrzeugtyp. Die Abhängigkeiten dieser Fabriken werden vom DI-Container eingefügt.
<code>public class Car1Factory : ICarFactory { private readonly IDep1 dep1; private readonly IDep2 dep2; private readonly IDep3 dep3; // ... (构造函数和工厂方法) }</code>
Strategie:
Die Auto-Strategieklasse verwendet die Fabrikschnittstelle, um das Auto basierend auf dem Eingabetyp zu erstellen.
<code>public class CarStrategy : ICarStrategy { private readonly ICarFactory[] carFactories; // ... (构造函数和策略方法) }</code>
Verwendung:
Fügen Sie im Kompositionsstamm die entsprechenden Abhängigkeiten in die Fabrikklasse ein und erstellen Sie die Autostrategie. Verwenden Sie diese Strategie, um den gewünschten Fahrzeugtyp zu erstellen.
<code>var strategy = new CarStrategy(new ICarFactory[] { new Car1Factory(dep1, dep2, dep3), // ... }); var car1 = strategy.CreateCar(typeof(Car1));</code>
Vorteile:
Das obige ist der detaillierte Inhalt vonWie kann die Abhängigkeitsinjektion das Problem vieler Abhängigkeiten in einer Factory-Methode lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!