Wie wird lose Kopplung mithilfe von Schnittstellen in Java erreicht, wenn eine Implementierungsklasse obligatorisch und an den Schnittstellenvertrag gebunden ist?

7

Wie ist lose Kopplung mit Schnittstellen verbunden, wenn wir unabhängig davon eine Implementierungsklasse erstellen müssen? Die Implementierungsklasse muss alle in der Schnittstelle definierten Methoden implementieren. Ich verstehe nicht, wie dies eine Lockerung der Kopplung ermöglicht. Ich bin neu in der objektorientierten Programmierung und im Software-Design. Wenn Sie etwas zu diesem Thema beleuchten könnten, wäre das sehr hilfreich. Ein Beispiel wäre das Sahnehäubchen.

    
Horse Voice 20.10.2013, 22:27
quelle

3 Antworten

10

Der entscheidende Punkt ist, dass eine Schnittstelle nicht nur erlaubt, eine Klasse zu schreiben, die sie implementiert, sondern auch mehrere.

Wenn Sie Code haben, der über eine Schnittstelle mit einer Klasse interagiert, kann dieser Code mit jeder Klasse zusammenarbeiten, die diese Schnittstelle implementiert, unabhängig davon, wie sie diese implementiert. Dadurch können Sie verschiedene Klassen demselben Code zuführen, ohne ihn ändern zu müssen.

Bitte beachten Sie, dass Schnittstellen nicht die einzige Möglichkeit sind, um eine lose Kopplung von Komponenten zu erreichen. Lose Kopplung bedeutet nur, dass die Komponenten in der Lage sind zusammenzuarbeiten, ohne etwas über das interne Funktionieren voneinander anzunehmen. Sie tun das, denn je mehr sich Ihre Komponenten als Blackbox behandeln, desto einfacher wird es, Änderungen an einer Komponente vorzunehmen, ohne andere zu beeinflussen. Schnittstellen können ein Werkzeug sein, um auf dieses Ziel hin zu arbeiten, aber sie sind auch nicht erforderlich, und sie sind auch nicht das einzige Werkzeug, das in dieser Hinsicht erwähnenswert ist.

    
Philipp 20.10.2013, 22:33
quelle
8

Die implementierende Klasse kann auswählen, wie die Funktionalität implementiert werden soll.

%Vor%

Kann durch Lesen einer CSV-Datei oder durch Abfragen einer Datenbank implementiert werden. Das Objekt, das die Person braucht, interessiert sich nicht dafür, wie die Person gefunden oder geladen wird, so wie sie ist.

Daher gilt es als lose gekoppelt.

Wenn es eng gekoppelt ist, müsste es wissen, wie man eine SQL-Abfrage erstellt oder eine CSV-Datei liest.

    
Sam Turtel Barker 20.10.2013 22:32
quelle
1

Der Client-Code ist mit der Schnittstelle verbunden. Es ist nicht an die Implementierung gekoppelt. Sie können die Implementierung ändern, ohne den Client-Code oder die Schnittstelle zu kompilieren.

Siehe Ссылка und Ссылка

    
Ray Tayek 21.10.2013 01:46
quelle

Tags und Links