Factory-Methode mit Abhängigkeitsinjektion und Kontrollinversion
Sie sind mit Factory-Methoden und dem Dependency-Injection-Muster (DI) vertraut, benötigen aber Anleitung für den speziellen Fall einer großen Anzahl von Abhängigkeiten in einer parametrisierten Factory-Methode.
Problem: Übermäßige Abhängigkeit von parametrisierten Fabriken
In Ihrer Factory-Klasse benötigt der Konstruktor sechs Abhängigkeiten, und jede von der Factory erstellte Autoinstanz verfügt über einen anderen Satz von Abhängigkeiten. Dies erschwert die Verwaltung der Fabrik und führt zu CreateCar
-Anweisungen in switch case
-Methoden.
Alternative Methoden
Sie haben zwei Alternativen vorgeschlagen: die Autoinstanz direkt in den Fabrikkonstruktor einzufügen oder einen Service-Locator zu verwenden. Allerdings haben diese Lösungen jeweils ihre Nachteile. Das Einfügen von Autoinstanzen verstößt gegen die Prinzipien des Fabrikdesigns, und von der Verwendung von Service-Locators wird generell abgeraten.
Lösung: Strategiemuster für die Abhängigkeitsinjektion
Anstatt switch case
-Anweisungen in Fabriken zu verwenden, sollten Sie die Übernahme des Strategiemusters für die Abhängigkeitsinjektion in Betracht ziehen. Mit diesem Muster können Sie mehrere Fabrikimplementierungen erstellen, die jeweils für die Erstellung eines bestimmten Fahrzeugtyps bestimmt sind.
Umsetzung:
ICarFactory
und ICarStrategy
einführen. ICarFactory
stellt eine Fabrik dar, die zum Erstellen von Autoinstanzen verwendet wird, während ICarStrategy
eine Sammlung von Fabriken darstellt. Car1Factory
und Car2Factory
. Diese Fabriken fügen über ihre Konstruktoren notwendige Abhängigkeiten ein. CarStrategy
-Klasse, die ICarStrategy
implementiert und ein Array von ICarFactory
-Instanzen enthält. Die Methode CarStrategy
in CreateCar
durchläuft die Fabriken, um eine Fabrik zu finden, die den gewünschten Fahrzeugtyp herstellen kann. CarStrategy
Instanzen in Ihren Code ein. Sie können dann die Methode CreateCar
verwenden, um die Autoinstanz zu instanziieren, ohne die Abhängigkeiten direkt anzugeben. Vorteile des Strategiemodus:
switch case
Anweisungen in Factory-MethodenDas obige ist der detaillierte Inhalt vonWie kann ich übermäßige Abhängigkeiten in einer parametrisierten Factory-Methode effektiv verwalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!