Validador de Usuarios
PATRONES DE COMPORTAMIENTO
Los patrones de comportamiento describen no sólamente patrones de objetos o clases sino también patrones de comunicación entre ellos. La variación de la encapsulación es la base de muchos patrones de comportamiento. Cuando un aspecto de un programa cambia frecuentemente, estos patrones definen un objeto que encapsula dicho aspecto. Los patrones definen una clase abstracta que describe la encapsulación del objeto.
PATRON INTERPRETER
Estructura:
Este patrón utiliza una Clase para representar cada Regla de la Gramática, siendo los símbolos del lado izquierdo de cada regla una Instancia de la Clase. Además Cada Expresión Regular definida por esta gramática puede ser representada mediante un Árbol Abstracto de Sintaxis que se elabora a partir de cada Instancia de la Clase.
- AbstractExpression
Declara una operación abstracta del intérprete, común a todos los nodos en el árbol de abstracto sintaxis.
- TerminalExpression
Implementa una operación del intérprete asociada con los símbolos terminales de la gramática.
Requiere una instancia para terminar los símbolos en las sentencias.
- NonterminalExpression
Una clase como esta es requerida para todas las reglas R ::= R1 R2 ... Rn en la gramática.
Mantiene instacias de las variables de tipo AbstractExpression
Para cada uno de los símbolos de R1 a través de Rn.
Implementa una operación del interprete para símbolos no terminales en la gramática. Típicamente el interprete llama así mismo recursivamente en las variables representadas de R1 a través de Rn.
- Context:
Contiene la información global para la interpretación.
- Client:
Construye o da la sintaxis del árbol abstracto representando una sentencia particular en el lenguaje que el programador define. La sintaxis del árbol abstracto reúne instancias de NonterminalExpression y clases TerminalExpressione.
Invoca operaciones del interprete.
- DesIgn Patterns: Elements of Reusable Object-Oriented Software Gamma, Helm, Johnson, Vlissides Editorial Addison-Wesley.
- http://kybele.escet.urjc.es/documentos/SI/Patrones/12_Interpreter.pdf
PATRON MEDIATOR
Cuando muchos objetos interactúan con otros objetos, se puede formar una estructura muy compleja, con objetos con muchas conexiones con otros objetos. En un caso extremo cada objeto puede conocer a todos los demás objetos. Para evitar esto el patrón Mediator encapsula el comportamiento de todo un conjunto de objetos en un solo objeto. |
- Mediator (mediador ):
- ConcreteMediator (mediador concreto):
- Colleague (colegas):
PATRON CHAIN OF RESPONSIBILITY
- Handler (Aprobación)
- ConcreteHandler (Director, VicePresidente, Presidente)
- Client (ChainApp)
PATRON TEMPLATE METHOD
- AbstractClass (DataObject)
- ConcreteClass (CustomerDataObject)
PATRON STATE Y MEMENTO
- Contexto (Context):
- Estado (State):
- Subclases de EstadoConcreto (ConcreteState):
- Memento.
- Originator.
- Caretaker
PATRON ITERATOR
Separar el mecanismo de recorrido del objeto List nos permite definir iteradores para diferentes políticas de recorrido sin tener que enumerarlas en la interfaz de List.
Cabe notar que el iterador y la lista están acoplados, y el cliente debe saber que es una lista lo que se está recorriendo, en lugar de algún otra estructura agregada. De ahí que el cliente comprometa una estructura agregada particular. Sería mejor si se pudira cambiar la clase agregada sin cambiar el código cliente. Esto se logra generalizando el concepto de iterador para soportar iteración polimorfa.
Se define una clase AbstractList que provea una interfaz común para manipular listas. De igual forma, necesitamos una clase abstracta Iterator que defina una interfaz de iteración común. Luego podemos definir subclasses iteradoras concretas para las diferentes implementaciones de la lista. Como resultado, el mecanismo de iteración llega a ser independiente de las clases agregadas concretas.
El problema restante radica en cómo crear el iterador. Como se quiere es escribir código independiente de las subclasses concretas de List, no se puede instanciar una clase específica. En su lugar, hay q hacer a los objetos de la lista responsables por la creación de su iterador correspondiente. Esto requiere una operación tal como CreateIterator, por medio de la cual los clientes solicitan un objeto iterador.
- Iterator:
- ConcreteIterator:
- Aggregate:
- ConcreteAggregate:
- http://agamenon.uniandes.edu.co/~pfiguero/soo/PatronesDiseno/Iterator/Iterator.html
- DesIgn Patterns: Elements of Reusable Object-Oriented Software Gamma, Helm, Johnson, Vlissides Editorial Addison-Wesley.