Heim > Backend-Entwicklung > C++ > Wie kann die Abhängigkeitsinjektion das Problem vieler Abhängigkeiten in einer Factory-Methode lösen?

Wie kann die Abhängigkeitsinjektion das Problem vieler Abhängigkeiten in einer Factory-Methode lösen?

Barbara Streisand
Freigeben: 2025-01-21 01:21:38
Original
644 Leute haben es durchsucht

How Can Dependency Injection Solve the Problem of Many Dependencies in a Factory Method?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Vorteile:

  • Entkoppeln Sie die Fahrzeugerstellung von der Abhängigkeitsinjektion.
  • Ermöglicht das einfache Hinzufügen und Entfernen von Fahrzeugtypen, ohne die Strategien zu ändern.
  • Verbesserte Testbarkeit und Flexibilität.

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!

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