La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Patrones de diseño Catálogo

Presentaciones similares


Presentación del tema: "Patrones de diseño Catálogo"— Transcripción de la presentación:

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

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

3 Factory Method Factory Method

4 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

5 Factory Method Ejemplo:

6 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)

7 Factory Factory

8 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.

9 Factory Ejemplo:

10 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

11 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

12 Abstract Factory Abstract Factory

13 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

14 Abstract Factory Ejemplo:

15 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)

16 Singleton Singleton

17 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)

18 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.

19 Builder Builder

20 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)

21 Builder Ejemplo:

22 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.

23 Prototype Prototype

24 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

25 Prototype Ejemplo:

26 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.

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

28 Adapter Adapter

29 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

30 Adapter Ejemplo:

31 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

32 Composite Composite

33 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

34 Composite Ejemplo:

35 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

36 Decorator Decorator

37 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.

38 Decorator Ejemplo:

39 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

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

41 Strategy Strategy

42 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.

43 Strategy Ejemplo:

44 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

45 Strategy Ejemplo:

46 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

47 Chain of responsibility

48 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

49 Chain of responsibility
Ejemplo:

50 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.

51 Command Command

52 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

53 Command Ejemplo:

54 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

55 Command Ejemplo:

56 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.

57 Patrones de diseño LABORATORIO …


Descargar ppt "Patrones de diseño Catálogo"

Presentaciones similares


Anuncios Google