Single-despacho
Supongamos nodo es una clase de interfaz y las dos subclases son implementaciones concretas de la interfase.
Si llama al método GenerateCode()
en una instancia de nodo, la operación real que se ejecuta depende del tipo del nodo. Podría ser el método en VariableRefNode
o AssignmentNode
. Es lo mismo si llama al PrettyPrint()
. Entonces, la operación real que se ejecuta depende del nombre del método que está llamando y del tipo del nodo.
doble despacho
Esta vez el Node
es lo que le permite pasar un parámetro de tipo NodeVisitor
a su método llamado Accept
.En su programa si se llama Accept
en una instancia de nodo, el funcionamiento real de la silla eléctrica ahora depende del tipo del nodo (VariableRefNode
o AssignmentNode
) Y del tipo de la instancia de visitantes que ha pasado en Accept
(TypeCheckingVisitor
o CodeGeneratingVisitor
) .
¿Puede ser más específico con respecto a lo que no comprende? – jzd
Imho debería pensar en duplicar despacho como una función de sobrecarga en tiempo de ejecución en lugar de tiempo de compilación. – dierre