2016-04-25 27 views
0

Zum Beispiel, wenn ich (Otto) Bus-Objekt injiziere, mit Dolch, dann müsste ich mehr Codezeile schreiben, nur um zu spezifizieren, an wie vielen Stellen ich es injiziere, in der Schnittstelle.Warum brauchen wir Dependency Injection für Singleton-Klassen in Java oder Android?

Auf der anderen Seite, wenn ich nur eine Singleton-Klasse verwenden, um Bus-Instanz zurückzugeben, dann muss ich nicht so viele Zeilen Code schreiben, als würde ich im Falle der Dependency-Injektion.

Also ist meine Frage "Warum oder wie ist es besser, Dependency Injection zu verwenden, um Singleton-Instanzen zu injizieren?"

Antwort

3

Zuerst reduziert DI die Menge an Standardbausteinen, die Sie aufrufen müssen, um Ihre Instanzen mit den erforderlichen Abhängigkeiten einzurichten. Weniger Code bedeutet bessere Lesbarkeit. Der Preis dafür ist die Konfiguration, aber für große Projekte lohnt es sich.

Zweitens profitieren Sie von DI, wenn Sie automatisierte Tests für Ihre App ausführen. Sie werden die Möglichkeit haben, die Standard-Singleton-Implementierung durch einen Schein zu ersetzen, den Sie steuern und verwenden können, um die verschiedenen Szenarien zu simulieren, die erforderlich sind, um alle Fälle abzudecken.

Ich denke auch, dass DI nur eine gute Lösung für große Android-Projekte oder mittlere bis große EE-Projekte ist. Ansonsten fügt es ein wenig unerwünschte Komplexität IMHO hinzu.