Principios y arquitectura / Patrones de diseño / De comportamiento
Visitor
Notas originales de SunDiaL · Ver fuente en inglés
El problema: Tienes una jerarquía estable de tipos a la que continuamente hay que añadir nuevas operaciones. Cada operación nueva debe implementarse en todos los tipos.
La solución: Uniones discriminadas, si el lenguaje lo permite.
La otra solución: Si esas operaciones se realizan «sobre» los objetos, en lugar de ser realizadas «por» ellos, extraerlas a una clase Visitor dedicada. Los tipos solo necesitan saber que pueden recibir una visita, no qué hace el visitante con ellos.