Visiteur (motif de conception)

Un article de Wikipédia, l'encyclopédie libre.

En programmation orientée objet, génie logiciel et accessoirement en MITIC, le motif de conception visiteur est une manière de séparer un algorithme de la structure d'un objet.

Ce modèle de conception permet à une classe externe d'accéder aux variables internes d'autres classes (allant à l'encontre des concepts de la POO). Ce modèle est utile lorsqu'on a un nombre raisonnable d'instances d'un petit nombre de classes et qu'on désire effectuer des opérations qui les impliquent tous (ou un bon nombre d'entre eux).

Si déporter des opérations contenues dans une classe vers une autre peut sembler mauvais au sens POO, il y a de bonnes raisons pour le faire. En effet, si ces opérations sont identiques pour chaque classe au lieu de dupliquer cette méthode il est préférable de mettre ces opérations dans un visiteur (centralisation de l'opération). Le visiteur utilisera ensuite les données internes de chaque objet pour effectuer l'opération demandée.

En pratique, le modèle de conception visiteur est réalisé de la façon suivante : chaque classe pouvant être « visitée » doit mettre à disposition une méthode publique « accepter » prenant comme argument un objet du type « visiteur ». La méthode « accepter » appelera la méthode « visite » de l'objet du type « visiteur » avec pour argument l'objet visité. De cette manière, un objet visiteur pourra connaître la référence de l'objet visité et appeler ses méthodes publiques pour obtenir les données nécessaires au traitement à effectuer (calcul, génération de rapport, etc.)

Image:Visitorpattern.png