Design pattern Coupleur

Le patron de conception (design pattern) dit « Coupleur » est un pattern conçu par moi même. Ce pattern, dérivé à l’origine du pattern GOF Observer, a été affiné pour permettre une communication bidirectionnelle et surtout une communication transmise de façon « virale », c’est à dire que chacun des éléments reçoivent les informations des éléments auxquels ils sont liés, cette information pouvant avoir déjà été transmise à d’autres Coupleurs. Pour être un peu plus clair, quelques informations s’imposent.

Pour commencer, il faut comprendre ce qu’est un Coupleur. Un Coupleur est en fait un objet à part entière destiné à gérer toutes communications événementielles avec d’autres objets. En effet, lorsqu’un événement se produit sur un objet graphique, le Coupleur de cet objet reçoit l’information et la diffuse vers tous les Coupleurs auxquels il est lié, ces autres Coupleurs, eux, transmettront l’information reçue à leur objet associé qui pourront effectuer leur mise à jour. Ceci est l’information essentielle à comprendre pour comprendre le fonctionnement des Coupleurs.

Dans certains cas, les interfaces possèdent une hiérarchie d’éléments graphiques, et dans ce cas, il est délicat de savoir dans quel sens aller chercher ou transmettre l’information, c’est pourquoi, le Coupleur entretient trois types de liaisons avec les autres Coupleurs:

  • Le Coupleur entretient une liaison de type « Informateur » avec un Coupleur d’élément graphique enfant dans la hiérarchie des éléments graphiques, ce qui permet de notifier les éléments enfants qu’un événement en amont s’est produit et que leur mise à jour est par conséquent nécessaire
  • Le Coupleur entretient une relation de type « Notificateur » avec un Coupleur d’élément parent, qui indique à un élément parent qu’un des enfants ou élément plus profondément présent dans la hiérarchie s’est mis à jour et qu’une mise à jour est éventuellement nécessaire.
  • Le dernier type de relation possible entre deux Coupleurs est la liaison « Indicateur », qui ne porte aucun intérêt à la hiérarchie pour la notification, en effet, une relation d’indication permettra une transmission de l’information à tous les Coupleurs dans la relation. Ce type de relation reste néanmoins dangereux dans la mesure ou des Coupleurs peuvent être liés par cette relation dans les deux sens, de façon directe ou indirecte qui aurait pour conséquence de faire entrer les Coupleurs en boucle infinie de transmission d’information.

Dans certains cas, il peut arriver que la transmission d’une information ne soit pas nécessaire voir gênante pour le bon fonctionnement du programme. Une fonction est prévue pour palier à ce problème dans le pattern Coupleur. En effet, un Coupleur peut être déclaré comme noeud final dans la transmission d’une information, dans ce cas, même si le Coupleur possède d’autres Coupleurs qui lui sont associés, aucun ne sera notifié de l’information nouvellement arrivée ou bien une règle spécifique devra être précisée dans le Coupleur.

Enfin, des règles spécifiques peuvent être précisées pour chacun des Coupleurs, en effet, dans un Coupleur, il est possible de créer un dictionnaire qui répertorie une fonction à exécuter lorsque le Coupleur reçoit des informations d’un Coupleur en particulier, dans le cas ou le Coupleur ne possèderait aucune règle spécifique, l’action exécutée serait générique et située dans l’objet hôte du Coupleur.