'Kopplung' ist ein Begriff, der die Beziehung zwischen zwei Entitäten in einem Softwaresystem beschreibt (normalerweise Klassen).
Wenn eine Klasse eine andere Klasse verwendet oder mit ihr kommuniziert, wird gesagt, dass sie von dieser anderen Klasse abhängt, und daher werden diese Klassen gekoppelt. Mindestens einer von ihnen "kennt" sich aus.
Die Idee ist, dass wir versuchen sollten, die Kopplung zwischen Klassen in unseren Systemen so "lose" wie möglich zu halten: daher "lose Kopplung" oder manchmal "Entkopplung" (obwohl "Entkopplung" im Englischen "überhaupt keine Kopplung" bedeuten würde, Leute wird oft verwendet, um "lose Kopplung" zwischen Entitäten zu implizieren).
Also: Was ist lose Kopplung im Vergleich zu starker Kopplung in der Praxis und warum sollten wir Entitäten lose gekoppelt machen?
Die Kopplung beschreibt den Grad der Abhängigkeit zwischen einer Entität zu einer anderen Entität. Oft Klassen oder Objekte.
Wenn ClassA stark von ClassB abhängt, ist die Wahrscheinlichkeit groß, dass ClassA bei einem Wechsel von ClassB beeinträchtigt wird. Dies ist eine starke Kopplung.
Wenn ClassA jedoch in geringem Maße von ClassB abhängt, ist die Wahrscheinlichkeit gering, dass ClassA durch eine Änderung des ClassB-Codes in irgendeiner Weise beeinträchtigt wird. Dies ist eine lose Kopplung oder eine "entkoppelte" Beziehung.
Lose Kopplung ist gut, weil wir nicht möchten, dass die Komponenten unseres Systems stark voneinander abhängen. Wir möchten unser System modular halten, sodass wir einen Teil sicher wechseln können, ohne den anderen zu beeinträchtigen.
Wenn zwei Teile lose miteinander verbunden sind, sind sie unabhängiger voneinander und brechen weniger leicht, wenn sich das andere ändert.
Wenn Sie beispielsweise ein Auto bauen, möchten Sie nicht, dass durch eine interne Änderung des Motors etwas im Lenkrad kaputt geht.
Während dies beim Bau eines Autos niemals zufällig passieren würde, passieren Programmierern ständig ähnliche Dinge. Lose Kopplung soll das Risiko verringern, dass solche Dinge passieren.
Eine starke Kopplung erfolgt in der Regel , wenn Entität A zu viel über Entität B. weiß Wenn Unternehmen A zu viele Annahmen über macht , wie Einheit B arbeitet oder , wie es gebaut ist, als es ein hohes Risiko besteht darin , dass eine Änderung in der Einheit B Einheit A. beeinflussen Diese liegt daran, dass eine seiner Annahmen über Entität B jetzt falsch ist.
Stellen Sie sich zum Beispiel vor, Sie würden als Fahrer bestimmte Annahmen darüber treffen, wie der Motor Ihres Autos funktioniert.
An dem Tag, an dem Sie ein neues Auto mit einem Motor kaufen, der anders funktioniert (oder aus irgendeinem Grund Ihr Motor ersetzt wurde), stimmen Ihre vorherigen Annahmen nicht. Wenn Sie Code in einem Computer wären, wäre dies jetzt ein falscher Code, der nicht richtig funktioniert.
Wenn jedoch alle Annahmen, die Sie als Fahrer über Autos gemacht haben, die folgenden sind: A - Sie haben Lenkräder und B - Sie haben Bremsen und Gaspedale, dann werden Sie Änderungen am Auto nicht beeinträchtigen, solange Sie nur wenige Annahmen treffen bleib richtig. Dies ist eine lose Kopplung.
Eine wichtige Technik zum Erreichen einer losen Kopplung ist die Verkapselung. Die Idee ist, dass eine Klasse ihre internen Details vor anderen Klassen verbirgt und eine genau definierte Schnittstelle bietet, über die andere Klassen mit ihr kommunizieren können.
So zum Beispiel, wenn Sie eine Klasse Auto wurden definiert, es die Schnittstelle (öffentliche Methoden) wäre wahrscheinlich drive(), stop(), steerLeft(), steerRight(), getSpeed(). Dies sind die Methoden, die andere Objekte für Car-Objekte aufrufen können.
Alle anderen Details der Car-Klasse: Wie der Motor funktioniert, welche Art von Kraftstoff verwendet wird usw. sind vor anderen Klassen verborgen, um zu verhindern, dass sie zu viel über Car wissen.
In dem Moment, in dem Klasse A zu viel über Klasse B weiß: Wir haben eine stark gekoppelte Beziehung, in der Klasse A zu stark von Klasse B abhängt und eine Änderung von Klasse B wahrscheinlich Klasse A beeinflusst. Das System lässt sich nur schwer erweitern und warten.
Eine Beziehung zwischen zwei Entitäten, bei der sie wenig voneinander wissen (nur was erforderlich ist), ist eine lose gekoppelte oder entkoppelte Beziehung.