Seit langem entwerfe ich Anwendungen mit Polymorphismus auf Basis von Interface/Inheritance, um lose gekoppelten Code zu erhalten. Soweit ich sehen kann (bisher), stellen DI-Frameworks/IoC lediglich Werkzeuge zur Verfügung, um dies "einfacher" zu machen, jedoch scheint das zusätzliche Abstraktionsniveau überflüssig zu sein und kostet Sie zusätzlichen Overhead.Design von Interface vs IoC/DI
Der einzige Grund, den ich denken kann, ist, wenn ein großes Team bereits ein bestimmtes DI/IoC-Framework kennt, dann kann jeder auf der gleichen Seite sein.
Aus meiner Sicht scheint DI das gleiche zu tun wie Design by Interface, ich hoffe, dass es mehr als das gibt, könnte mir jemand erklären, warum die Verwendung eines DI/IoC-Frameworks eine bessere Strategie ist?
Ich hoffe wirklich, ich habe es falsch über DI/IoC.
Danke, das ist ziemlich gut, bei Overhead ich meine konzeptionell, ich realisiere, dass es einen sehr kleinen Perf 'Hit gibt, aber für meine allgemeine Anwendungsdomäne ist es vernachlässigbar. - Übrigens überlege ich, Ninject (C# /. Net) für ein neues Projekt zu verwenden. – ocodo
@slomojo: In diesem Fall, solange Sie nicht verrückt auf [ab] mit allen Arten von Tricks, die Container auf Sie werfen, ohne die Kosten/Nutzen richtig zu analysieren, kann man DI-Container als automatische Schreibketten von neuen zu sehen Anweisungen, um Ihren Code formbarer zu machen. Das einzige, was der durchschnittliche Entwickler verstehen muss, sind die DI-Bindungen. Aber selbst wenn Sie so viel tun, werden Sie viel gewinnen, wenn Sie bewusst über Kopplungen in Bereichen Ihres Systems nachdenken müssen. –
@slomojo: Auch @Mark Seemann (empfehlen Sie, seine am höchsten bewerteten Beiträge hier zu lesen, wenn Sie gute DI-Beratung wünschen) hat ein Buch in Kürze (schon in elektronischer MEAP-Form) Ich freue mich auf mich - http: // manning .com/seemann, was für Sie von Vorteil sein könnte. Es deckt alle subtileren Muster ab, die im Zusammenhang mit dem Abhängigkeitsmanagement im Allgemeinen (zusammen mit Behandlungen spezifischer Behälter) auftreten. Hoffentlich werden andere mit ein paar Informationen mitspielen. –