Le pattern visiteur est, a mon sens, l'un des patterns les plus
importants. Il est classé parmi les patterns comportementaux mais de par
son utilisation, il est aussi un pattern structurel.
Le
premier intérêt du pattern visiteur est de permettre de découpler les
comportements des structures des objets surtout si les comportements ne
sont pas tous définis et doivent être extensible. La logique métier est
définie a coté de la structure objet stockant les données. A noter qu'en
règle générale, cette démarche est a proscrire en POO... sauf, sauf,
sauf dans ce cas. Oui le pattern visiteur est fait pour ça, il sépare les préoccupations.
Deuxième
intérêt, s'il ne s'agissait que de découpler les aspects comportements
et
structures, certains avanceront que l'on peut s'en passer.... Sauf ..
qu'en fait le visiteur ne vient pas qu'avec cette capacité. En effet,
le visiteur a aussi pour but (du fait de son besoin de visiter son objet
visitable) de permettre l'appel a d'autres visiteur en faisant le
parcours de ses dépendances. Avec cette capacité, le pattern visiteur
acquiert le status d'iterateur (Actif) sur un parcourt de graphe, a
choisir, le visiteur offrira bien plus de souplesse que l'iterateur.
Ainsi,
dans son fonctionnement, le visiteur vient avec une interface Visitable
qu’implémentera son client. Cette interface définit la méthode accept prenant en paramètre nos visiteurs. Cette méthode une fois implémentée appellera la méthode visit du visiteur en se passant en paramètre afin de donner a celui-ci toutes ses capacités publiques accessibles ou privées via un peu de reflexivité.
A noter que le pattern visiteur implique cependant une contrainte que la structure a visiter soit suffisamment stable de façon a ne pas avoir une double ration de maintenance a faire dans le cas de modification sur le modèle objet.
Aucun commentaire:
Enregistrer un commentaire