Como se d ael Memento
monkexApuntes16 de Abril de 2018
5.706 Palabras (23 Páginas)146 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í?]
[Creo que sí. Parece un extracto de la AntiPatternsBook. Trate de googlear un fragmento bastante largo del texto a continuación. ]
This is characterized by the lack of architecture specifications for a system under development. Esta AntiPattern se caracteriza por la falta de especificaciones de la arquitectura de un sistema en desarrollo. Usually, the architects responsible for the project are experienced with previous system construction, and assume that documentation is unnecessary due to their competence and experience. Por lo general, los arquitectos responsables del proyecto tienen experiencia con la construcción del sistema anterior, y asumir que la documentación es innecesaria debido a su competencia y experiencia. This overconfidence leads to exacerbated risks in key areas affecting system success. Este exceso de confianza conduce a riesgos agudizan en las áreas clave que afectan el éxito del sistema. Missing architecture definitions occur in one or more of these areas: Faltan definiciones de arquitectura se producen en uno o más de estas áreas:
- Software architecture and specifications including language use, library use, coding standards, memory management, and so forth. Arquitectura de software y especificaciones como el uso del lenguaje, uso de la biblioteca, las normas de codificación, gestión de memoria, y así sucesivamente.
- Hardware architecture, including client and service configurations La arquitectura de hardware, incluyendo configuraciones de cliente y el servicio de
- Communications architecture, including networking protocols and devices Arquitectura de comunicaciones, incluidos los protocolos de red y dispositivos de
- Persistence architecture, including databases and file handling mechanisms Persistencia de la arquitectura, incluyendo bases de datos y archivo de los mecanismos de manejo
- Application security architecture, including thread models and trusted system base Arquitectura de seguridad de aplicaciones, incluyendo modelos de hilo y de confianza del sistema base
- Systems management architecture Arquitectura de administración de sistemas
Los síntomas y consecuencias:
- Lack of architecture planning and specification minimal definition of architecture for software, hardware, communications, persistence, security, and systems management La falta de planificación de la arquitectura y la especificación de definición mínima de la arquitectura de software, hardware, comunicaciones, la persistencia, la seguridad, y sistemas de gestión
- Hidden risks due to scale, domain knowledge, technology, and complexity which emerge as the project progresses Hidden riesgos debido a la escala, el conocimiento del dominio, la tecnología y la complejidad que surge como avanza el proyecto
- Impending project failure or unsuccessful system due to inadequate performance, excess complexity, misunderstood requirements, usability, and other system characteristics. Fracaso de los proyectos inminentes o sistema de éxito debido a un rendimiento insuficiente, el exceso de complejidad, incomprendido necesidades, facilidad de uso, y las características del sistema. For example, approximately 1 out of 3 systems encounter serious performance issues during development and operations. Por ejemplo, aproximadamente 1 de cada 3 sistemas de encontrarse con problemas graves de rendimiento durante el desarrollo y las operaciones.
- Lack of technical backup and contingency plans La falta de apoyo técnico y planes de contingencia
Las causas típicas:
- Lack of risk management La falta de gestión de riesgos
- Overconfidence of management, architects, and/or developers El exceso de confianza de la gestión, los arquitectos, y / o desarrolladores de
- Reliance on previous experience which may differ in critical areas La confianza en la experiencia anterior, que pueden diferir en áreas críticas
- Implicit and unresolved issues in the architecture due to gaps in systems engineering Implícitos y las cuestiones no resueltas en la arquitectura debido a las lagunas en los sistemas de ingeniería
Solución refactorizado:
The refactored solution entails an organized approach to systems architecture definition. La solución refactorizado implica un enfoque organizado para los sistemas de definición de la arquitectura. The approach relies on multiple views of the system. El enfoque se basa en múltiples puntos de vista del sistema. Each view models the system from the perspective (viewpoint) of a system stakeholder. Cada uno de los modelos de ver el sistema desde el punto de vista (punto de vista) de un actor del sistema. The stakeholders may be real or imaginary, individual or aggregate. Las partes interesadas pueden ser reales o imaginarios, individuales o agregadas. Each stakeholder is responsible for a high priority set of questions and issues. Cada interesado es responsable de una alta prioridad serie de preguntas y cuestiones. Each view represents the whole information system and answers these key questions and issues. Cada vista representa el sistema de información conjunto y responde a estas preguntas y cuestiones claves. The views are linked for consistency. Las opiniones están vinculadas a la coherencia. A view comprises a set of diagrams, tables, or specifications. Una visión comprende una serie de diagramas, tablas o especificaciones. Generally a view is a lightweight specification. En general, un punto de vista es una especificación de peso ligero. The purpose of the architecture documentation is to communicate architecture decisions and other issue resolution. El propósito de la documentación de la arquitectura es la arquitectura de comunicación de decisiones y la resolución de otro asunto. The documentation should be easily understandability and inexpensive to maintain. La documentación debe ser de fácil comprensibilidad y su mantenimiento económico.
...