Ich habe die Injektion von Abhängigkeiten zu meinem Code hinzugefügt, weil es den Code viel einfacher macht, durch Mocking einen Unit-Test durchzuführen.
Ich verlange jedoch, dass Objekte, die weiter oben in meiner Aufrufkette stehen, Kenntnis von Objekten haben, die weiter unten in der Aufrufkette stehen.
Verstößt dies gegen das Gesetz der Demeter? Wenn ja, ist das von Bedeutung?
Beispiel: Eine Klasse A hat eine Abhängigkeit von einer Schnittstelle B. Die zu verwendende Implementierung dieser Schnittstelle wird in den Konstruktor der Klasse A injiziert. Jeder, der die Klasse A verwenden will, muss nun auch einen Verweis auf eine Implementierung von B haben und kann deren Methoden direkt aufrufen, d.h. er hat Kenntnis von deren Unterkomponenten (Schnittstelle B)
Wikipedia sagt über das Gesetz der Demeter: "Der grundlegende Gedanke ist, dass ein bestimmtes Objekt so wenig wie möglich von der Struktur oder den Eigenschaften eines anderen Objekts (einschließlich seiner Teilkomponenten) annehmen sollte."
1 Stimmen
Können Sie einen Beispielcode veröffentlichen? Wenn Sie foo.bar().baz() machen, dann verstoßen Sie gegen das Gesetz von Demeter. Wollen Sie damit sagen, dass Sie am Ende so vorgehen?