Le couplage lâche est essentiellement la dépendance indirecte entre les modules sur la façon dont ils peuvent évoluer.
Généralement, lorsqu'il existe un système étroitement couplé, différents modules / objets ont des comportements très spécifiques qui supposent ce comportement des objets périphériques. Ces objets sont liés / couplés à d'autres comportements de modules et ils ne peuvent pas être réutilisés isolément ou dans tout autre contexte.
De tels modules, même s'ils sont responsables de fonctionnalités individuelles, ne peuvent pas évoluer indépendamment ou ne peuvent pas évoluer
Un exemple:
Disons que vous avez 3 objets
Shape
(un objet modèle) et Canvas
(un élément d'interface utilisateur). Maintenant
Supposons qu'une méthode shape.draw(Canvas)
dessine un objet sur le plan fourni par le plan du canevas.
Maintenant, parfois les fenêtres sont partiellement couvertes et redimensionnées. Dans de tels cas, la méthode ci-dessus pourrait simplement faire quelque chose comme ça.
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.
}
Fondamentalement, ici, la fonction de dessin prend le rectangle où les choses doivent être dessinées. C'est un code facile à comprendre (les gens pourraient appeler cela simple ). Cependant, il s'agit d'un code extrêmement couplé.
Imaginez la situation:
- Que se passe-t-il si le mécanisme de la toile pour tenir les fenêtres n'est plus un rectangle?
- que se passe-t-il s'il existe des décalages supplémentaires que Canvas conserve et qui sont privés ?
- Et si une autre application veut la même forme mais n'a plus de fenêtre GUI (par exemple, elle crée des images et enregistre dans des fichiers).
La cause profonde du problème est que l'objet shape
sait et donc étroitement couplé avec Canvas
.
Ce qui est souhaitable qu'un ensemble de pixels soit donné pour façonner où il écrit; la shape
connaissance ne doit pas avoir (même implicite) sur l' endroit où sont réellement écrites les pixels.