diff --git a/Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md b/Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md index c6f3d41..24d9868 100644 --- a/Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md +++ b/Diplomarbeitsbuch-individueller-teil-Konstantin-Hintermayer.md @@ -106,10 +106,8 @@ Ausgangslage ist eine Softwarearchitektur im Direct-Dependency-Graph-Modell. architecture-beta service a(mdi:package-variant-closed)[Klasse A] service b(mdi:package-variant-closed)[Klasse B] - service c(mdi:package-variant-closed)[Klasse C] a:R --> L:b - b:R --> L:c ``` Bei diesem Beispiel ist die Klasse A ein high-level Modul, welches direkt auf die Klasse B referenziert, was das DI-Prinzip verbietet. Das Problem dabei: Die einzelnen Klassen sind eng gekoppelt, was das Austauschen von B mit einer anderen Klasse unmöglich macht. Genau dieses Problem wird vom DIP gelöst. @@ -119,13 +117,9 @@ architecture-beta service a(mdi:package-variant-closed)[Klasse A] service b(mdi:package-variant-closed)[Klasse B] service ib(mdi:car-clutch)[Interface B] - service c(mdi:package-variant-closed)[Klasse C] - service ic(mdi:car-clutch)[Interface C] a:B --> T:ib ib:R <-- L:b - b:B --> T:ic - ic:R <-- L:c ``` Das High-Level-Modul ruft lediglich eine Abstraktion eines Low-Level-Moduls auf, welche von einem, oder mehreren Low-Level-Modulen implementiert wurde. Für das High-Level-Modul ist es hier egal, welches Low-Level-Modul die Implementierung bereitstellt. Dadurch erhält man einen viel modulareren Aufbau in der Software. Die einzelnen Module sind auch leichter austauschbar und testbar. Genau diese Modularität macht Dependency Injection möglich.