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