Ich stehe nun vor der Aufgabe, einen IoC-Container (Inversion of Control) in eine vorhandene Anwendung zu integrieren, und suche nach Empfehlungen, wie dies am einfachsten erreicht werden kann, um letztendlich die Kopplung zu reduzieren und dadurch die Testbarkeit zu verbessern. Obwohl ich im Allgemeinen nicht die meisten Klassen als klassifizieren Gott Objekte hat jeder zu viele Aufgaben und versteckte Abhängigkeiten durch Statik, Singletons, und es fehlt ihnen an Schnittstellen.
Hier einige Hintergrundinformationen zu den Herausforderungen, denen Sie sich stellen müssen:
- Abhängigkeitsinjektion wird selten verwendet
- Statische Methoden gibt es zuhauf - sowohl als Factory- als auch als Hilfsmethode
- Singletons sind ziemlich verbreitet
- Schnittstellen sind bei Verwendung nicht zu detailliert
- Objekte ziehen häufig nicht benötigte Abhängigkeiten über Basisklassen ein
Unsere Absicht ist es, dass wir beim nächsten Mal, wenn wir Änderungen in einem bestimmten Bereich vornehmen müssen, versuchen, Abhängigkeiten herauszufiltern, die tatsächlich existieren, aber hinter globalen Elementen wie Singletons und Statik verborgen sind.
Ich nehme an, das macht den IoC-Container sekundär zur Einführung der Abhängigkeitsinjektion, aber ich würde erwarten, dass es eine Reihe von Praktiken und Empfehlungen gibt, die befolgt oder in Betracht gezogen werden könnten, um diese Abhängigkeiten aufzubrechen.