351 Stimmen

Was ist der Unterschied zwischen loser und enger Kopplung im objektorientierten Paradigma?

Kann jemand den genauen Unterschied zwischen loser Kopplung und enger Kopplung im objektorientierten Paradigma beschreiben?

3voto

Vishal Sharma Punkte 2663

Es gibt bestimmte Tools, die durch ihre Bibliothek eine Abhängigkeitsinjektion bieten, zum Beispiel haben wir in .net ninject Bibliothek .

Wenn Sie weiter in Java gehen, dann Feder bietet diese Möglichkeiten.

Lose gekoppelte Objekte können durch die Einführung von Schnittstellen in Ihrem Code erstellt werden, das ist, was diese Quellen tun.

In Ihrem Code schreiben Sie beispielsweise

Myclass m = new Myclass();

Diese Aussage in Ihrer Methode besagt, dass Sie abhängig sind von myclass wird dies als eng gekoppelt bezeichnet. Wenn Sie nun eine Konstruktorinjektion oder eine Eigenschaftsinjektion anbieten und ein Objekt instanziieren, wird es lose gekoppelt.

3voto

Mohammad Heydari Punkte 3209

Es geht um Klassen Abhängigkeitsquote zu einer anderen, die bei loser Kopplung so niedrig und bei enger Kopplung so hoch ist. Um es klar zu sagen, in der serviceorientierte Architektur Dienste sind lose aneinander gekoppelt gegen monolithische welche Klassen in Abhängigkeit zueinander stehen, ist beabsichtigt

2voto

MSIL Punkte 2521

Lose Kopplung ist die Antwort auf hart kodierte Abhängigkeiten im alten Stil und damit verbundene Probleme wie häufige Neukompilierung, wenn sich etwas ändert, und Wiederverwendung von Code. Der Schwerpunkt liegt auf der Implementierung der Arbeitslogik in Komponenten und der Vermeidung von lösungsspezifischem, verdrahtetem Code.

Lose Kopplung = アイオーシー Siehe cette zur leichteren Erklärung.

2voto

David William Punkte 91

Lose Kopplung ist der Prozess, die Abhängigkeit Ihrer Klasse muss indirekt ohne die Bereitstellung aller Informationen der Abhängigkeit (dh in der von der Schnittstelle) im Falle enge Kopplung Sie direkt in der Abhängigkeit, die nicht gut Weg der Codierung ist geben.

1voto

lupchiazoem Punkte 7924

Wenn die Erstellung/Existenz eines Objekts von einem anderen Objekt abhängt, das nicht angepasst werden kann, spricht man von enger Kopplung. Wenn die Abhängigkeit angepasst werden kann, spricht man von loser Kopplung. Betrachten wir ein Beispiel in Java:

class Car {

    private Engine engine = new Engine( "X_COMPANY" ); // this car is being created with "X_COMPANY" engine
    // Other parts

    public Car() { 
        // implemenation 
    }

}

Der Kunde von Car Klasse kann eine mit NUR "X_COMPANY"-Motor erstellen.

Ziehen Sie in Erwägung, diese Kopplung zu unterbrechen, wenn Sie die Möglichkeit haben, dies zu ändern:

class Car {

    private Engine engine;
    // Other members

    public Car( Engine engine ) { // this car can be created with any Engine type
        this.engine = engine;
    }

}

Nun, ein Car ist nicht abhängig von einer Engine von "X_COMPANY", da sie mit Typen erstellt werden kann.

Eine Java-spezifische Anmerkung: Die Verwendung von Java-Schnittstellen nur um der Entkopplung willen ist kein angemessener Entwurfsansatz. In Java hat eine Schnittstelle einen Zweck - sie soll als Vertrag fungieren, der zwangsläufig ein Entkopplungsverhalten bzw. -vorteil bietet.

Der Kommentar von Bill Rosmus in der akzeptierten Antwort enthält eine gute Erklärung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X