Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre du Club
    Bon design pattern pour synchroniser deux modules (Adapter, Observer ?)
    Bonjour,

    En vue d'implémenter une fonctionnalité dans un projet existant, je m'interroge sur la manière de piloter son fonctionnement qui contient un couplage que je veux éviter "fort" entre deux éléments composants cette fonctionnalité.

    Composant 1 : un composant dont je dépend, qui reçoit et traite des données, et informe (lance des évènements) de ses actions. Ce composant n'est pas irremplaçable. La notion d'évènements est importante.
    Composant 2 : un composant de présentation de données que je créé, qui va réagir en fonction de l'évolution des données. Mais le composant 1 voit les données de sa manière propre et mon composant 2. va se les représenter de manière détachée.
    "Composant" 3 : entre les deux mon couplage : je ne veux pas instaurer un couplage fort entre 1. et 2. Le composant 3 va donc constituer un pont qui va traduire les évènement du composant 1. en quelque chose de compréhensible par le composant 2.

    • Dans l'idée : un évènement se produit, composant 1. notifie le 3. et le traduit pour le forwarder directement au 2.
    • Mon composant 2. voit le composant 3 comme son traducteur
    • Si je change mon composant 1., je n'aurais qu'à changer le composant 3. Mon composant 2. ne sera pas modifié.


    Pour le moment je penche du côté du design pattern Adapter ou de l'Observer.

    Lequel semble selon vous le plus adapté ? Si je suis sur la mauvaise voix, quel autre design pattern conviendrait ?


    Note: au niveau technique, ce besoin de ne pas coupler les composants provient du fait que le composant 1 n'est pas basé sur le même fonctionnement (technologies en place) que le reste du projet même si le projet est capable de le comprendre (d'où mon composant 3 qui sera le "traducteur").

    Merci

  2. #2
    Membre émérite
    Bonjour,

    Si la seule façon de recevoir des données du composant 1 est de s'abonner à ses événements, alors le composant 3 sera de facto un Observer et une forme d'Adapter... je ne vois pas très bien comment on pourrait se passer de l'un ou l'autre.

    En tout cas cette démarche de découplage me semble très saine dans l'esprit. Cf cet article : http://blog.8thlight.com/eric-smith/...not-yours.html

  3. #3
    Membre du Club
    C'est justement cet espèce de mélange que je vois m'arriver dessus qui avait motivé ma question.

    C'est vrai que le composant 1. est un peu contraignant avec le système d'évènement, qui peut toujours ne pas être utilisé mais où on est vraiment invité à le faire (car après il y a aussi la démarche de ne pas vouloir modifier une librairie externe).

    Concernant le lien, au début je ne comprenais pas le rapport, mais l'exemple avec le ping m'a fait comprendre ce pourquoi tu m'avais invité à le lire.

    DU coup je vais coupler Adapter/Observer pour ce que je veux faire, à moins que d'autres idées ne viennent ?