Descargar la presentación
La descarga está en progreso. Por favor, espere
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 …
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.