Als «dependency-injection» getaggte Fragen

Abhängigkeitsinjektion ist ein Entwurfsmuster, bei dem Abhängigkeiten (Instanzen von Objekten, Eigenschaften) einer Komponente über den / die Konstruktor (en), Methoden oder Felder (Eigenschaften) festgelegt werden. Es ist eine spezielle Form der allgemeineren Abhängigkeitsinversion.


8
Ist eine Schnittstelle, die asynchrone Funktionen verfügbar macht, eine undichte Abstraktion?
Ich lese das Buch Prinzipien, Praktiken und Muster der Abhängigkeitsinjektion und lese über das Konzept der undichten Abstraktion, das im Buch gut beschrieben wird. In diesen Tagen überarbeite ich eine C # -Codebasis mithilfe der Abhängigkeitsinjektion, sodass asynchrone Aufrufe verwendet werden, anstatt solche zu blockieren. Dabei erwäge ich einige Schnittstellen, …

5
Wie verwende ich die Abhängigkeitsinjektion und vermeide zeitliche Kopplung?
Angenommen, ich habe die Service, die Abhängigkeiten über den Konstruktor empfängt, aber auch mit benutzerdefinierten Daten (Kontext) initialisiert werden muss, bevor sie verwendet werden können: public interface IService { void Initialize(Context context); void DoSomething(); void DoOtherThing(); } public class Service : IService { private readonly object dependency1; private readonly object …


4
Abhängigkeitsinjektion für Datenobjekte verwenden?
Ich lerne gerade etwas über Abhängigkeitsinjektion und bin auf etwas fixiert. Dependency Injection empfiehlt, abhängige Klassen über den Konstruktor zu senden, aber ich frage mich, ob dies für Datenobjekte erforderlich ist. Da die Unit-Testbarkeit einer der Hauptvorteile von DI ist, würde ein Datenobjekt, das nur Daten speichert, und keine Prozeduren …

1
Verwenden von Pythons Method Resolution Order für die Abhängigkeitsinjektion - ist das schlecht?
Ich habe gesehen, wie Raymond Hettingers Pycon "Super Considered Super" sprach, und ein wenig über Pythons MRO (Method Resolution Order) gelernt, das eine Klasse "Eltern" -Klassen auf deterministische Weise linearisiert. Wir können dies zu unserem Vorteil nutzen, wie im folgenden Code, um die Abhängigkeitsinjektion durchzuführen. Also jetzt möchte ich natürlich …

5
Können wir die Vererbung mithilfe von Strategiemustern und Abhängigkeitsinjektion vollständig ersetzen?
Zum Beispiel: var duckBehaviors = new Duckbehavior(); duckBehaviors.quackBehavior = new Quack(); duckBehaviors.flyBehavior = new FlyWithWings(); Duck mallardDuck = new Duck(DuckTypes.MallardDuck, duckBehaviors) Da die Duck-Klasse alle Verhaltensweisen enthält (abstrakt), scheint das Erstellen einer neuen Klasse MallardDuck(die erweitert wird Duck) nicht erforderlich zu sein. Referenz: Head First Design Pattern, Kapitel 1.


1
Was ist die Motivation für die Annotation @ImplementedBy in Guice?
Ich habe kürzlich über die @ImplementedByin Google Guice verfügbaren Anmerkungen gelesen . Es ermöglicht dem Programmierer, eine Bindung zwischen einer Schnittstelle und ihrer Implementierung für die zukünftige Verwendung bei der Abhängigkeitsinjektion anzugeben. Dies ist ein Beispiel für eine Just-in-Time-Bindung . Ich bin es gewohnt, explizite Bindungen in meinen Modulen mit …

1
Organisation mehrerer Zend-Anwendungscodes
Im vergangenen Jahr habe ich an einer Reihe von Anwendungen gearbeitet, die alle auf dem Zend-Framework basieren und sich auf eine komplexe Geschäftslogik konzentrieren, auf die alle Anwendungen Zugriff haben müssen, auch wenn sie nicht alle verwenden (einfacher als mehrere Bibliotheksordner für jeden zu haben Anwendung, da sie alle mit …




4
Umgebungskontext vs. Konstruktorinjektion
Ich habe viele Kernklassen, die ISessionContext der Datenbank, ILogManager für das Protokoll und IService für die Kommunikation mit anderen Diensten benötigen. Ich möchte die Abhängigkeitsinjektion für diese Klasse verwenden, die von allen Kernklassen verwendet wird. Ich habe zwei mögliche Implementierungen. Die Kernklasse, die IAmbientContext mit allen drei Klassen akzeptiert oder …

2
Wie vermeide ich eine verrückte Anzahl von Schnittstellen in der Benutzeroberfläche mit Abhängigkeitsinjektion?
Problem Ich habe kürzlich viel darüber gelesen, dass Singletons schlecht sind und wie die Abhängigkeitsinjektion (die ich als "Verwenden von Schnittstellen" verstehe) besser ist. Als ich einen Teil davon mit Callbacks / Interfaces / DI implementierte und mich an das Prinzip der Schnittstellentrennung hielt, war ich ziemlich durcheinander. Die Abhängigkeiten …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.