Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Alter Hase
Was ist DI?
Welches Problem löst es?
Wie könnte eine Implementation in C++ aussehen?
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Da es aber nicht Aufgabe meiner Klasse Z ist, den Logger zu kennen, beziehungsweise die Abhängigkeiten von X zu kennen (oder X instanziieren), soll ein IoC Container das ganze Lösen.
damit könnte ich sage:
container.create<X>();
container.create<Z>();
und der IoC Container fügt alle Abhängigkeiten ein.
Da C++ aber nicht über Reflection verfügt, müssen hier entweder die Abhängigkeiten einmal eingegeben werden, oder ein Reflection-System programmiert werden.
+1 für diese Antwort. Ich benutze Dependency Injection auch super gerne, weil ich in meinen Tests einfach alles wegmocken kann. Aber wie auch von Tobiking erwähnt, ist der Einsatz umstritten und endet oft in grunlegenden Religionsfragen.IoC Container werden zwar recht oft verwendet, gelten aber als Anti-Pattern. Das einzige Problem das der IoC Container löst ist die Testbarkeit, da man nun im Unittest einfach die Abhängigkeiten ersetzen kann. Der Knackpunkt ist wie X an den Container kommt. Ist der Container global oder ein Singleton, haben wir wieder eine fixe Abhängigkeit. Wird er immer mit durchgereicht, haben wir wieder die Situation das wir Objekte durchreichen, die irgendwo vielleicht mal gebraucht werden könnten....
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Toa« (13.04.2015, 14:37)
Werbeanzeige