Visitor
Architecture 🔴 SeniorDéfinition
Sépare un algorithme de la structure d'objets sur laquelle il opère. Permet d'ajouter de nouvelles opérations sans modifier les classes existantes.
Analogie
Un inspecteur qui visite différents types de bâtiments : même démarche, mais le rapport diffère selon le bâtiment.
Exemple de code
class TaxVisitor {
visitBook(b) { return b.price * 0.05; }
visitFood(f) { return f.price * 0.10; }
}
// item.accept(visitor)
Cas d'usage
Calculs sur un AST (compilateur), sérialisation polymorphe, rapports multi-formats.
Anti-pattern
Ajouter de nouveaux types de noeuds fréquemment — le visitor doit être modifie a chaque fois.