Lose Kopplung ist im Wesentlichen die indirekte Abhängigkeit zwischen Modulen davon, wie sie sich entwickeln können.
Im Allgemeinen weisen verschiedene Module / Objekte bei eng gekoppelten Systemen ein sehr spezifisches Verhalten auf, das dieses Verhalten der peripheren Objekte voraussetzt. Solche Objekte sind mit dem Verhalten anderer Module verknüpft / gekoppelt und können nicht isoliert oder in einem anderen Kontext wiederverwendet werden.
Solche Module können sich, obwohl sie für die individuelle Funktionalität verantwortlich sind, nicht unabhängig oder nicht weiterentwickeln
Ein Beispiel:
Angenommen, Sie haben 3 Objekte
Shape
(ein Modellobjekt) und Canvas
(ein UI-Element). Jetzt
Angenommen, eine Methode shape.draw(Canvas)
zeichnet ein Objekt auf der Ebene, die von der Ebene der Leinwand geliefert wird.
Jetzt sind Fenster manchmal teilweise abgedeckt und werden in der Größe geändert. In solchen Fällen kann die obige Methode genau so etwas tun.
shape::draw(Canvas) {
Rect.WindowLeft = Canvas.GetWindowRect.getLeftOffset();
Rect.LeftPixel = Canvas.GetWindowRect.pixels() + Rect.WindowLeft;
.... // like this get all co-ordinates.
draw_instance(Rect); // This will draw the actual shape.
}
Grundsätzlich nimmt hier die Zeichenfunktion das Rechteck auf, in dem Dinge gezeichnet werden müssen. Dies ist ein leicht verständlicher Code (die Leute könnten diesen einfachen Code nennen ). Dies ist jedoch ein extrem gekoppelter Code.
Stellen Sie sich die Situation vor:
- Was ist, wenn der Mechanismus der Leinwand zum Halten von Fenstern kein Rechteck mehr ist?
- Was ist, wenn Canvas zusätzliche Offsets behält, die privat sind ?
- Was ist, wenn eine andere Anwendung dieselbe Form haben möchte, aber kein GUI-Fenster mehr hat (z. B. Bilder erstellen und in Dateien speichern)?
Die Hauptursache des Problems ist, dass das Objekt es shape
kennt und daher eng mit ihm verbunden ist Canvas
.
Was ist wünschenswert, dass ein Pixelsatz gegeben wird, um zu formen, wo er schreibt; Sie shape
sollten nicht (auch nicht implizit) wissen, wo die Pixel tatsächlich geschrieben sind.