Visitor
Architecture 🔴 SeniorDefinition
Separe un algorithme de la structure d'objets sur laquelle il opere. Permet d'ajouter de nouvelles operations sans modifier les classes existantes.
Analogie
Un inspecteur qui visite differents types de batiments : meme demarche, mais le rapport differe selon le batiment.
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), serialisation polymorphe, rapports multi-formats.
Anti-pattern
Ajouter de nouveaux types de noeuds frequemment — le visitor doit etre modifie a chaque fois.