Abhängigkeiten und Entkopplung

Wir sprechen in der Software-Entwicklung gerne und oft von loser Kopplung. Kopplung bedeutet, wie stark eine Klasse beziehungsweise ein Objekt an eine Abhängigkeit gebunden ist.

Zweifellos ist lose Kopplung in fast allen Fällen besser als eine starke Kopplung.

Wir sollten allerdings nicht die erste Regel von Abhängigkeiten vergessen:

@@@KEY-MESSAGE@@@ Vermeide Abhängigkeiten.

@@@KEY-MESSAGE@@@ Wenn Du Abhängigkeiten nicht vermeiden kannst, dann mache sie explizit.

siehe artikel implizite vs. explizite abhängigkeiten

Es gibt insgesamt vier Ebenen von Kopplung:

Vererbung

Subklasse. Stärkste Kopplung, die es gibt. Ohne Elternklasse kann sie Subklasse nicht überleben. Es gibt einen Kontrakt zwischen Subklasse und Elternklasse.

Komposition

Ein Objekt hat ein anderes als Property. Das koppelt die Lebensdauer der beiden Objekte. Wenn der Träger Garbage collected wird, wird auch die Abhängigkeit entfernt, außer sie lebt länger, weil noch jemand Referenzen darauf hat.

Nachrichten

Ein Objekt schickt einem anderen Objekt Nachrichten. Es wird als Parameter für einen Methodenaufruf übergeben.

Schauen wir uns bei