This commit is contained in:
@@ -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.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user