Patrones de diseño Catálogo

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

FACHADA COMPOSITOR MEMENTO
Patrones de Diseño GEYFFER ALEXANDER ACOSTA CRISTHIAN DOUGLAS CASTRO
Encapsulamiento y Abstracción
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
Patrones Creacionales
Lenguajes de Programación Tema 3
Juan Manuel Perdigón Mario Felipe Monsalve
PATRÓN ADAPTER (Adaptador) Elena Moreno Ramírez Laura Sánchez Romero Aroa Solana Ruiz.
Patrones de diseño equipo n.1
Patrones de diseño Grupo 1 Haeberli, Julián Lara, Guisell
PRESENTACIÓN DRUPAL Versión 0.1 Por Ricardo Chang.
Geykel Raul Moreno Ceballos Sherpa Chairman & Chief Software Architect Adapter (Wrapper) Structural Pattern (Patrón Estructural)
COMUNICACIÓN Y TIC Ángela Espinosa Hayler Peñaranda.
Modelo de Analisis. Que es el modelo de análisis. Su objetivo es comprender y generar una arquitectura de objetos para el sistema con base en lo especificado.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
BASE DE DATOS EN LA WEB POR- OSIRYS MARCIAGA JESUS NIETO.
Herencia Multiple en Java
INGENIERÍA DE INFORMACIÓN Y APLICACIONES
Arquitectura y Patrones de diseño.
Sistemas operativos Linux
Clases y Objetos.
LIBRO C/V PROFESSIONAL DHARMA USAHA
Clases y Objetos.
UNIDAD III: LAS TIC COMO FUENTES DE INVESTIGACION y DIFUSION DE INFORMACION Objetivo: Conocer y aplicar adecuadamente los principios básicos de estructura.
Programación Orientada a Objetos
“POLIMORFISMO PARAMETRICO”
Programación Orientada a Eventos
Fundamentos de la programación orientada a objetos
Clases y Objetos en Java
Patrones de Diseño Agustín J. González ElO329.
Patrones de Diseño Agustín J. González ElO329.
Programación orientada a objetos
Ingeniería de Software Somerville
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Tema 3. Lenguaje unificado de modelado UML
Modelo de 3 capas. Qué es la arquitectura de una aplicación? La arquitectura se refiere a la forma en la que es diseñada tanto física como lógicamente.
Software Es intangible, existe como información, ideas, conceptos, símbolos, pero no ocupa un espacio físico, se podría decir que no tiene sustancia. Se.
FACTORY METHOD Creación a nivel de clases.
Patrones de diseño: Prototype
Resumen: Análisis de requerimientos
UNIVERSIDAD TECNOLÓGICA EMILIANO ZAPATA
APLICACIONES II ° Patrones De Diseño ° Esteban Omar Mora Delgado
Modelo de interacción de usuario.  El Desarrollo basado en modelos de la interfaz de usuario, en inglés Model-based User Interface Development (MB-UID),
FUNDAMENTOS DE PROGRAMACION EN ENTORNO WEB. Rodrigo Cabello Ing. Informático Director de proyectos Think – Ideas in Motion FUNDAMENTOS.
HERRAMIENTAS DE PROGRAMACIÓN
Universidad Nacional de Colombia - Leguajes de Programación
Customización en ADempiere
Actividad 3 Hipervínculos Luis Alejandro Gómez Ramos Maestra: Adriana Ubiarco Tecnologías de la información I 1-A T/M BGC PREPA 10.
ANALISIS DE SISTEMAS ANALISIS ORIENTADO A OBJETOS.
REDES Video 7.
Brinda Soporte Presencial
Class adapter.
Introducción a los Sistemas Operativos
Bienvenidos!.
“Conceptos Básicos de Java”
Arquitectura Aplicaciones Web
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
Patrones de Diseño Agustín J. González ElO329.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
GC-F-004 V.01 CENTRO DE INDUSTRIA Y LA CONSTRUCCIÓN REGIONAL TOLIMA.
Gestión de Recursos compartidos.. Aspectos fundamentales del usó compartido Existen dos maneras de compartir archivos y carpetas: desde el equipo y desde.
PRUEBAS DE CAJA NEGRA. -Internationa Software Testing Qualification Board (ISTQB) Internationa Software Testing Qualification Board (ISTQB) Técnica de.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
Estructura de Sistemas Operativos
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS Magallanes Napa, Anthony Yair.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS. Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde.
Estructura de los Sistemas Operativos
Transcripción de la presentación:

Patrones de diseño Catálogo Basado en: GAMMA, Erich [et al.] Design Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994

Patrones para crear objetos Patrones de diseño Patrones para crear objetos Creational Factory Method Factory Abstract Factory Singleton Builder Prototype

Factory Method Factory Method

Factory Method Factory Method Permite a una clase general diferir la responsabilidad de crear objetos (productos) que necesita a una subclase especifica que tiene toda la información necesaria para crearlo. La clase general manipula los productos usando una interfaz común

Factory Method Ejemplo:

Factory Method El método imprime( ) de la clase abstracta Factura necesita un documento al cual escribir el contenido. Pero no tiene que saber como construir los objetos específicos de los productos (Word o PDF) por lo que se lo deja a sus clases hijas Las clases hijas (FacturaWord o FacturaPDF) saben como crear los objetos específicos que les corresponden. Factura solo trabaja con los productos a través de la interfaz común (Documento)

Factory Factory

Factory Factory Libera al objeto cliente de la responsabilidad de crear objetos que necesita (productos) difiriéndola a una clase que conoce la implementación específica. El objeto cliente maneja los productos a través de una interfaz común Factory puede presentar distintas formas de crear objetos. Por ejemplo con distintos parámetros o aplicando parámetros default.

Factory Ejemplo:

Factura no tiene que conocer las clases que implementan Documento Factory Factura no tiene que conocer las clases que implementan Documento DocumentoFactory se encarga de crear los objetos adecuados según los parámetros que se pasan (o método ejecutado) Factura maneja los productos (Word o PDF) por medio de la interfaz Documento

Factory Method vs Factory Obliga a la clase cliente a ser abstracta Solo permite una forma de invocación Factory No ocupa el recurso (limitado) de herencia Se puede reutilizar en distintos clientes que requieran el mismo tipo de productos Permite diferentes formas de invocación para distintos clientes

Abstract Factory Abstract Factory

Abstract Factory Abstract Factory Permite crear objetos de una familia de clases sin exponer sus clases específicas. Sirve como puerta de entrada a la implementación de un módulo que puede presentar múltiples implementaciones

Abstract Factory Ejemplo:

Abstract Factory El cliente (MascotaGUI) solo tiene que conocer la clase que implementa el abstract factory (FabricaObjetosXX). De ella obtendrá todos los objetos que necesite sin que deba de saber las clases que implementan todas las demás interfaces. El cliente puede cambiar fácilmente de implementación usando otra clase FabricaObjetos (por ejemplo cambiar de FabricaObjetosXX a FabricaObjetosEquipo42)

Singleton Singleton

Singleton Singleton Asegura que solo se tenga una instancia de la clase en todo el sistema. Usado para representar recursos únicos del sistema como la configuración inicial, recursos compartidos como el teclado, la pantalla, etc. Se usa como punto de entrada a contextos globales (Application context)

Singleton Pros Permite tener un punto de entrada conocido en todo el sistema. Controla el uso de recursos compartidos, al ser el único punto de acceso. Contras Reduce la flexibilidad del sistema, pues un cambio en su estado afecta a todos los objetos que lo están utilizando. Debe tener en cuenta el acceso al mismo tiempo de dos o mas hilos de ejecución. Difícil de utilizar en ambientes que no comparten el espacio de memoria, por ejemplo dos instancias de la JVM o en dos sistemas que se comunican usando la red.

Builder Builder

Builder Builder Concentra el proceso de crear objetos complejos en un solo punto, liberando a la clase cliente de la responsabilidad de conocer la forma de crear el objeto producto. Usado para facilitar la construcción de objetos que dan muchas opciones en su configuración inicial. Muy usado en el diseño de Lenguajes Específicos de Dominio (DSL)

Builder Ejemplo:

Builder Builder puede tener valores por defecto para los parámetros de configuración. Un Builder ya configurado se puede reutilizar para construir productos con los mismos parámetros de inicio.

Prototype Prototype

Prototype Prototype Permite a los objetos crear copias de si mismos Usado cuando la creación de un objeto original es muy costosa, como cuando el objeto se trajo desde una base de datos También usado si se quieren usar los valores iniciales y modificarlos sin afectar a los clientes del objeto original

Prototype Ejemplo:

Prototype Java utiliza el patrón Prototype a través de la interfaz java.lang.Cloneable La copia puede ser superficial (shallow copy) copiando los valores de los atributos del objeto base o profunda (deep copy) haciendo clones de los atributos.

Patrones Estructurales Patrones de diseño Patrones Estructurales Structural Adapter Composite Decorator

Adapter Adapter

Adapter Adapter Permite utilizar una clase (Adaptee) aunque sea incompatible con el sistema porque no presenta la interfaz esperada (Target) Muy usado cuando se quieren ínter-conectar sistemas que no fueron concebidos juntos

Adapter Ejemplo:

Adapter Los dos sistemas (dgae e ingeniería) tienen entidades similares para un alumno que no comparten una interfaz común El adapter permite usar un objeto de un sistema externo dentro del sistema objetivo Un objeto adapter vive junto con el objeto que adapta, por ello se tiene que pasar desde el constructor y no puede ser modificado

Composite Composite

Composite Composite Permite crear estructuras en forma de árbol que pueden ser navegadas de manera uniforme sin importar si es un nodo con sub - ramas o si es un nodo final

Composite Ejemplo:

Composite El método getHijos( ) de los elementos finales (Archivo, Empleado) devolverán una colección vacía. Se puede imprimir la estructura del sistema de archivos recorriendo cada uno de los elementos e imprimiendo su nombre, es lo mismo que sea un archivo o una carpeta. Se puede imprimir el organigrama de una empresa recorriendo por igual sus oficinas y los empleados en ellas

Decorator Decorator

Decorator Decorator Permite agregar funcionalidad a un objeto de manera dinámica. Decorator mantiene una referencia al objeto original, al cual redirige todas las invocaciones de sus métodos. Antes o después de llamar a los métodos sobre el objeto original puede agregar funcionalidad Es similar a la sobrecarga de métodos en las clases hijas (en una jerarquía) pero mas flexible.

Decorator Ejemplo:

Se agrega la lógica necesaria antes o después Decorator Las llamadas a los métodos de Mascota son retransmitidos al objeto original Se agrega la lógica necesaria antes o después El decorator se crea con el objeto original El resto del código trata al objeto como si fuera el original

Patrones de Comportamiento Patrones de diseño Patrones de Comportamiento Behavioral Strategy Chain of responsibility Command

Strategy Strategy

Strategy Strategy Define la interfaz de un algoritmo permitiendo intercambiar la implementación según las necesidades. Context tiene un objeto strategy que realiza una operación que necesita. ConcreteStrategy<X> presentan la interfaz requerida por Context, pero la implementación puede variar libremente. Dependiendo de cual sea la clase que usa Context como strategy, el comportamiento variará. Incluso el objeto strategy usado puede variarse en tiempo de ejecución.

Strategy Ejemplo:

Strategy AdministradorDescargas necesita de un VerificadorHuellaElectronica que compruebe que el archivo descargado es el que se esperaba El sitio de descargas puede usar el algoritmo de su preferencia para calcular y publicar la huella electrónica Dependiendo del tipo de huella, AdministradorDescargas puede variar en llamar a un objeto MD5 o SHA1 Al método descarga no le interesa los detalles internos del algoritmo, a el le basta con llamar al método verifica( ) El método descarga no cambia por usar uno u otro tipo de objeto VerificadorHuellaElectronica

Strategy Ejemplo:

El Robot deja que su objeto strategy decida como debe de moverse Dependiendo del modo en que se encuentre el robot (agresivo, defensivo, neutral) es la implementación del algoritmo de comportamiento que se usará Se pueden crear nuevas implementaciones del comportamiento y usarlas sin que se tenga que modificar al Robot

Chain of responsibility

Chain of responsibility Permite que varios objetos puedan actuar sobre una solicitud Client envía una solicitud de servicio y una cadena de objetos Handler decidirá (uno por uno) si debe hacer algo con la petición y si debe pasarla al siguiente objeto en la cadena Usado para configurar un conjunto de transformaciones independientes a un objeto. También se puede usar para identificar el primer Handler que puede manejar la petición

Chain of responsibility Ejemplo:

Chain of responsibility Las distintas implementaciones de AplicaCargo modifican el objeto orden que reciben según sus reglas y lo pasan al siguiente eslabón de la cadena. El orden de las operaciones en la cadena se define estableciendo el objeto siguiente al construir los objetos. La cadena en sí es construida por otro objeto (por ejemplo por un Factory) y puede ser estática o bien construirse al vuelo.

Command Command

Command Command Encapsula una acción sobre un objeto Usado para programar acciones para ser ejecutadas en otro momento. Client prepara los command pero no los ejecuta, los proporciona a Invoker para que este los ejecute cuando lo considere necesario. Usado para responder a eventos (clic en opción de menú) o para programar la ejecución en cierto momento

Command Ejemplo:

Command Dentro de la lógica de Aplicacion puede estar el dejar programados eventos Aplicacion prepara los objetos Tarea con todo lo necesario para llevarse a cabo y lo registra en Calendario Cuando llegue el momento programado, Calendario llamará a ejecuta( ) del objeto registrado

Command Ejemplo:

Command EventHandler es una clase del framework JavaFX* que presenta el patrón Command para el manejo de eventos de la GUI como clic en botones, menús, teclado, etc. Cuando se está construyendo el menú se están construyendo comandos y se registran en las opciones de menú. Cuando se de clic sobre la opción se ejecutará el método handle( ) del comando registrado.

Patrones de diseño LABORATORIO …