Heim > Backend-Entwicklung > C++ > Wie kann die Abhängigkeitsinjektion die Herausforderungen von Factory-Methoden mit vielen Abhängigkeiten lösen?

Wie kann die Abhängigkeitsinjektion die Herausforderungen von Factory-Methoden mit vielen Abhängigkeiten lösen?

Linda Hamilton
Freigeben: 2025-01-21 01:16:11
Original
266 Leute haben es durchsucht

How Can Dependency Injection Solve Factory Method Challenges with Many Dependencies?

Factory-Methoden mit Abhängigkeitsinjektion und Umkehrung der Kontrolle

Frage:

Sie sind mit dem Factory-Methodenmuster vertraut, stehen jedoch vor Herausforderungen bei der Verwaltung einer großen Anzahl von Abhängigkeiten im Factory-Konstruktor. Sie versuchen, eine konkrete Autoklasse in die Fabrik einzuführen, aber das verstößt gegen das Fabrikprinzip. Sie sollten den Service Locator auch nicht verwenden, da er als Anti-Pattern bekannt ist.

Lösung:

Die am besten geeignete Methode für dieses Szenario ist der Strategiemodus. Dieses Muster ermöglicht es Ihren DI-Containern, Abhängigkeiten in die ihnen gehörenden Factory-Instanzen einzufügen, wodurch die Notwendigkeit entfällt, Service-Locators zu verwenden oder andere Klassen mit Abhängigkeiten zu überladen.

Implementierung:

Schnittstelle:

<code>public interface ICarFactory
{
    ICar CreateCar();
    bool AppliesTo(Type type);
}

public interface ICarStrategy
{
    ICar CreateCar(Type type);
}</code>
Nach dem Login kopieren

Fabrik:

<code>public class Car1Factory : ICarFactory
{
    private readonly IDep1 dep1;
    private readonly IDep2 dep2;
    private readonly IDep3 dep3;

    // ... 构造函数和实现
}

public class Car2Factory : ICarFactory
{
    private readonly IDep4 dep4;
    private readonly IDep5 dep5;
    private readonly IDep6 dep6;

    // ... 构造函数和实现
}</code>
Nach dem Login kopieren

Strategie:

<code>public class CarStrategy : ICarStrategy
{
    private readonly ICarFactory[] carFactories;

    public CarStrategy(ICarFactory[] carFactories)
    {
        // ... 构造函数和实现
    }
}</code>
Nach dem Login kopieren

Verwendung:

<code>var strategy = new CarStrategy(new ICarFactory[] {
    new Car1Factory(dep1, dep2, dep3),
    new Car2Factory(dep4, dep5, dep6)
});

var car1 = strategy.CreateCar(typeof(Car1));
var car2 = strategy.CreateCar(typeof(Car2));</code>
Nach dem Login kopieren

Vorteile:

  • Vermeiden Sie die Verwendung von Switch-Case-Anweisungen in Fabriken.
  • Unterstützt das Hinzufügen zusätzlicher Fabriken ohne Neugestaltung.
  • Jede Fabrik verfügt über eigene Abhängigkeiten, die vom DI-Container eingefügt werden.
  • Befolgen Sie die Prinzipien der Abhängigkeitsinjektion und der Umkehrung der Kontrolle.

Das obige ist der detaillierte Inhalt vonWie kann die Abhängigkeitsinjektion die Herausforderungen von Factory-Methoden mit vielen Abhängigkeiten lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage