Simplify DI Graphics
Some checks failed
Word Count / count-words (push) Failing after 33s

This commit is contained in:
2026-03-07 14:18:27 +00:00
parent 23c27600ef
commit 64b148fe6a

View File

@@ -106,10 +106,8 @@ Ausgangslage ist eine Softwarearchitektur im Direct-Dependency-Graph-Modell.
architecture-beta architecture-beta
service a(mdi:package-variant-closed)[Klasse A] service a(mdi:package-variant-closed)[Klasse A]
service b(mdi:package-variant-closed)[Klasse B] service b(mdi:package-variant-closed)[Klasse B]
service c(mdi:package-variant-closed)[Klasse C]
a:R --> L:b 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. 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. 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 a(mdi:package-variant-closed)[Klasse A]
service b(mdi:package-variant-closed)[Klasse B] service b(mdi:package-variant-closed)[Klasse B]
service ib(mdi:car-clutch)[Interface 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 a:B --> T:ib
ib:R <-- L:b 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. 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.