140 likes | 448 Views
PATRONES DE DISEÑO. FACHADA COMPOSITOR MEMENTO. FACHADA. Un patrón de diseño es: • una solución estándar para un problema común de programación • una técnica para flexibilizar el código haciéndolo satisfacer ciertos criterios
E N D
PATRONES DE DISEÑO FACHADA COMPOSITOR MEMENTO
FACHADA Un patrón de diseño es: • una solución estándar para un problema común de programación • una técnica para flexibilizar el código haciéndolo satisfacer ciertos criterios • un proyecto o estructura de implementación que logra una finalidad determinada • un lenguaje de programación de alto nivel • una manera más práctica de describir ciertos aspectos de la organización de un programa • conexiones entre componentes de programas • la forma de un diagrama de objeto o de un modelo de objeto
Un patrón de diseño puede considerarse como un documento que define una estructura de clases que aborda una situación particular. Los patrones de diseño se dividen en tres grupos principales: Patrones de creación: Patrón de Fábrica Abstracta, Patrón Constructor, Patrón del Método de Fabricación, Patrón Prototipo, Patrón de Instancia Única (Singleton). Patrones estructurales: Patrón Adaptador, Patrón Puente, Patrón Compuesto, Patrón Decorador, Patrón de Fachada, Patrón de Peso Mosca, Patrón Apoderado. Patrones funcionales: Patrón de Cadena de Responsabilidad, Patrón de Comando, Patrón Intérprete, Patrón Iterador, Patrón Mediador, Patrón Memento, Patrón Observador, Patrón de Estado, Patrón de Estrategia, Patrón del Método Plantilla, Patrón Visitante.
El patrón de diseño fahcada sirve para proveer de una interfaz unificada sencilla que haga de intermediaria entre un cliente y una interfaz o grupo de interfaces más complejas. Hacer una biblioteca de software más fácil de usar y entender, ya que facade implementa métodos convenientes para tareas comunes; Hacer el código que usa la librería más legible, por la misma razón; Reducir la dependencia de código externo en los trabajos internos de una librería, ya que la mayoría del código lo usa Facade, permitiendo así más flexibilidad en el desarrollo de sistemas; Envolver una colección mal diseñada de APIs con un solo API bien diseñado.
COMPOSITOR El patrón Compositor se puede utilizar cuando: Se busca representar una jerarquía de objetos como “parte-todo”. Se busca que el cliente puede ignorar la diferencia entre objetos primitivos y compuestos (para que pueda tratarlos de la misma manera).
EJEMPLO DE UNA ESTRUCTURA DE UN COMPOSITOR Componente (Graphic) Declara la interface para los objetos de la composición. Implementa un comportamiento común entre las clases. Declara la interface para acceso y manipulación de hijos. Declara una interface de manipulación a los padres en la estructura recursiva (opcional).
Compositor (Picture) * Define un comportamiento para objetos con hijos. * Almacena componentes hijos. * Implementa operaciones de relación con los hijos.Cliente: * Manipula objetos de la composición a través de componente. Leaf “HOJA” (Rectangle, Line, Text) * Representa los objetos “hoja” (no poseen hijos). * Define comportamientos para objetos primitivos.
MEMENTO El patrón de diseñoMemento, 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. Tambien este modelo sirve para capturar y externalizar el estado interno de un objeto para restaurarlo más tarde sin violar el encapsulamiento. Puede ser usado en combinación con los Patrones Command e Iterator.
Memento: Almacena el estado interno del objeto Originator, protege del acceso por parte de objetos distintos al Originator. • Originator: crea un objeto memento, que contiene una foto fija de su estado interno. • Caretaker: es el responsable de mantener la seguridad del objeto memento, no opera o examina el contenido de memento
Podemos distinguir en el esquema la presencia de 3 entidades. Por un lado tenemos al Originador, que es la instancia del objeto de la que queremos salvar el estado. Por otro lado tenemos el Consumidor (o cliente) que es la clase que necesita obtener y almacenar ese estado para, en un momento futuro, si procede, restaurarlo. Finalmente el objeto Memento encapsula de forma opaca el estado del originador permitiendo que el consumidor lo almacene y lo utilice para restaurar el estado de este en cualquier momento.