patrones

Páginas: 3 (694 palabras) Publicado: 10 de abril de 2013
Patrones de Diseño
Patrón de comportamiento Visitor

Técnicas de Programación - Curso 2008/09
(Esther Guerra Sánchez)

Visitor
Propósito
Representa una operación a realizar sobre loselementos de una estructura de objetos
Permite definir una nueva operación sin cambiar
las clases de elementos sobre las que opera

Visitor
Motivación
Ej: Un compilador representa los programascomo árboles
de sintaxis abstracta, sobre los que ejecuta operaciones
Muchas operaciones necesitan diferenciar distintos tipos
de nodo en el árbol (expresiones, variables, etc.)
Node
typeCheck()generateCode()
prettyPrint()

Problemas:
difícil de comprender,
mantener y cambiar
nuevas operaciones
requerirán recompilar
todas las clases

VariableRefNode AssignmentNode
typeCheck()generateCode()
prettyPrint()

typeCheck()
generateCode()
prettyPrint()

Solución: independizar las
clases de las operaciones
que se ejecutan sobre ellas

Visitor
Motivación
Elementos sobrelos que se opera

Operaciones
Compiler

Node

visitVariableRefNode(VariableRefNode)
visitAssignmentNode(AssignmentNode)

accept(v:NodeVisitor)

VariableRefNode AssignmentNodeaccept(v:NodeVisitor)

accept(v:NodeVisitor)

v.visitVariableRefNode(this);

NodeVisitor

TypeCheckingVisitor

CodeGeneratorVisitor

visitVariableRefNode(VariableRefNode)visitVariableRefNode(VariableRefNode)
visitAssignmentNode(AssignmentNode) visitAssignmentNode(AssignmentNode)

v.visitAssignmentNode(this);

Visitor
Motivación

// creación de dos nodos del AST
Node n1 = newAssignmentNode(...);
Node n2 = new VariableRefNode(...);
// generar código para los dos nodos
NodeVisitor v = new CodeGeneratorVisitor();
n1.accept(v);
n2.accept(v);

Elementos sobre
los que seopera

Operaciones
Compiler

Node

visitVariableRefNode(VariableRefNode)
visitAssignmentNode(AssignmentNode)

accept(v:NodeVisitor)

VariableRefNode AssignmentNode
accept(v:NodeVisitor)...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • patrones
  • El patrono
  • PATRONO
  • Patrón
  • Patrones
  • El Patron
  • Patrones
  • patrones

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS