Sommaire

Reflective Visitor

1. Discussion

Nous avons introduit dans un chapitre précédent le Visitorpattern Visitor afin de pouvoir ajouter de nouvelles fonctionnalités à un ensemble de classes sans devoir modifier ces classes à chaque ajout. Chaque nouvelle fonctionnalité donne lieu à une classe de visiteur qui implante cette fonctionnalité en introduisant un ensemble de méthodes, une pour chaque classe. Toutes ces méthodes portent le même nom, par exemple visite, et ont un seul paramètre dont le type est celui de la classe pour laquelle la fonctionnalité est implantée.

Toutefois pour implanter le pattern Visitor, les classes devant être visitées subissent une légère modification, à savoir l’introduction d’une méthode pour accepter le visiteur, méthode dont le seul but est d’invoquer la méthode visite avec un paramètre correctement typé. Le nom de cette méthode est souvent accepte ou accepteVisiteur.

La figure 29.5 montre une mise en œuvre du pattern Visitor dans le but de visiter une hiérarchie d’objets décrite à l’aide du pattern Composite. Ces objets sont des sociétés dont certaines, les sociétés mères, possèdent des filiales. Les deux fonctionnalités ajoutées sont le calcul des coûts d’entretien et la possibilité d’envoi d’un mailing commercial à une société ...