Como se d ael Memento
Enviado por monkex • 16 de Abril de 2018 • Apuntes • 5.706 Palabras (23 Páginas) • 119 Visitas
Concepto
Memento es un patrón de comportamiento relacionado con el flujo de control del sistema.
Propósito
Este patrón tiene como finalidad almacenar el estado de un objeto (o del sistema completo) en un momento dado de manera que se pueda restaurar en ese punto de manera sencilla.
Para ello se mantiene almacenado el estado del objeto para un instante de tiempo en una clase independiente de aquella a la que pertenece el objeto (pero sin romper la encapsulación), de forma que ese recuerdo permita que el objeto sea modificado y pueda volver a su estado anterior.
Motivación
El patrón Memento se usa para:
- Poder restaurar el sistema desde estados pasados.
- Para facilitar el hacer y deshacer de determinadas operaciones, para lo que habrá que guardar los estados anteriores de los objetos sobre los que se opere (o bien recordar los cambios de forma incremental).
Ejemplo
Deshacer una operación en un editor gráfico
[pic 1]
Si se quiere volver al estado original mediante cálculos geométricos, el resultado podría ser distinto al esperado.
[pic 2]
Estructura
[pic 3]
Memento permite almacenar (parte de) el estado de Originator (Creador). Ofrece dos interfaces distintas: una estrecha para el aretaker y una extendida para Originator.
- El Creador es capaz de crear objetos Memento con información sobre su estado y restaurar éste a partir de un Memento.
- El Caretaker se encarga de mantener los objetos Memento y en ningún caso accede a su información interna.
Colaboraciones
Un caretaker solicita un memento a un creador, lo almacena durante
un tiempo y se lo devuelve a su creador.
A veces el caretaker no devolverá el memento a su creador, ya que el creador podría no necesitar nunca volver a un estado anterior.
Los mementos son pasivos. Sólo el creador que creó el memento asignará o recuperará su estado.
[pic 4]
Consecuencias
- Mantiene la encapsulación.
- Simplifica la clase Creador.
- El uso de memento puede resultar costoso si se hacen muchas
copias o las copias son voluminosas.
- En algunos lenguajes puede no ser trivial definir dos interfaces
distintas para el memento.
- El objeto (caretaker) que se encarga de gestionar los mementos no sabe cuánto ocupan y su almacenamiento puede provocar un coste inesperado.
Anti patrones
- La disputa familiar (the feud).
- La experiencia mata el diseño (architecture by implication): Descuidar el diseño por confiar excesivamente en la experiencia previa.
- Los clientes son tontos (customers are idiots): Pensar que uno sabe más que el cliente, y por tanto no es necesaria una investigación con el cliente.
- Maníaco del control (control freak).
- Máquina de Rube Goldberg (Rube Goldberg machine): Realizar implementaciones muy complejas para tareas sencillas.
- Matar al mensajero (shoot the messenger).
- La disputa familiar (the feud).
- La experiencia mata el diseño (architecture by implication): Descuidar el diseño por confiar excesivamente en la experiencia previa.
- Los clientes son tontos (customers are idiots): Pensar que uno sabe más que el cliente, y por tanto no es necesaria una investigación con el cliente.
- Maníaco del control (control freak).
- Máquina de Rube Goldberg (Rube Goldberg machine): Realizar implementaciones muy complejas para tareas sencillas.
- Matar al mensajero (shoot the messenger).
- The Feud El Feudo
- AntiPattern Problema
- También conocido como Duelo de mazorcas de maíz, directores territoriales y guerras de posiciones, la contienda está marcada por conflictos de personalidad entre los administradores que puede afectar dramáticamente el medio ambiente de trabajo.
- Los empleados de informes a los gerentes a menudo sufren las consecuencias de sus desacuerdos, ya que la animosidad entre los administradores por lo general se refleja en las actitudes y acciones de sus empleados, que siempre se vuelve negativo.
- En consecuencia, los desarrolladores de software sufren de una falta de comunicación productiva, y una falta general de cooperación impide cualquier forma de transferencia de tecnología útil. A partir de entonces, la productividad de las empresas y de la imagen puede verse afectada negativamente.
- Cuando el conflicto estalla en balísticos de intercambios verbales, los asesinatos verbales son llevadas a cabo contra el personal de la dirección. Tal comportamiento puede participar toda las organizaciones de gestión empresarial, perder tiempo y energía. E-mail enfrentamientos en gran medida puede agravar el conflicto (véase el E-mail es el Mini-AntiPattern peligrosas). Feudos de gestión pueden prolongarse durante años, con recurrencia crónica de las hostilidades abiertas, si no se abordan con prontitud.
Arquitectura por implicación
: Architecture By Implication Nombre AntiPattern: Arquitectura por implicación
[TODO: hacer de este ajusten mejor a las AntiPatternTemplate]
[Esto parece extraño, como se acaba de copiar de alguna parte. ¿Es así?]
...