L'accoppiamento libero è essenzialmente la dipendenza indiretta tra il modulo su come possono evolversi.
Generalmente, quando esiste un sistema strettamente accoppiato, diversi moduli / oggetti hanno comportamenti molto specifici che assumono quel comportamento degli oggetti periferici. Tali oggetti sono collegati / accoppiati a comportamenti di altri moduli e non possono essere riutilizzati in modo isolato o in qualsiasi altro contesto.
Tali moduli anche se responsabili della funzionalità individuale non possono evolversi indipendentemente o non possono evolversi
Un esempio:
Supponiamo che tu abbia 3 oggetti
Shape
(un oggetto modello) e Canvas
(un elemento UI). Adesso
Supponiamo che un metodo shape.draw(Canvas)
disegnerà un oggetto sul piano che viene fornito dal piano della tela.
Ora, a volte le finestre sono parzialmente coperte e ridimensionate. In questi casi, il metodo sopra potrebbe fare qualcosa del genere.
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.
}
Fondamentalmente, qui la funzione di disegno raccoglie il rettangolo in cui le cose devono essere disegnate. Questo è un codice di facile comprensione (la gente potrebbe chiamare questo semplice ). Tuttavia, questo è un codice estremamente accoppiato.
Immagina la situazione:
- Che cosa succede se il meccanismo della tela di contenere finestre non è più un rettangolo?
- cosa succede se ci sono ulteriori offset che Canvas mantiene che è privato ?
- Che cosa succede se un'altra applicazione vuole la stessa forma ma non ha più una finestra della GUI (ad esempio, sta creando immagini e salvando nei file).
La causa principale del problema è che oggetto shape
conosce e quindi strettamente accoppiati con Canvas
.
Ciò che è desiderabile che venga dato un set di pixel per modellare dove scrive; il shape
non dovrebbe avere conoscenza (anche implicito) su cui i pixel sono effettivamente scritti.