definir qué es un patrón de diseño. cuándo utilizarlos. clasificación de patrones. patrones mas...
TRANSCRIPT
![Page 1: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/1.jpg)
![Page 2: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/2.jpg)
![Page 3: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/3.jpg)
Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos
![Page 4: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/4.jpg)
El diseño es una actividad₋ El cómo frente al qué₋ Hacerlo correcto frente a hacer lo correcto₋ Asignar responsabilidades a las clases
![Page 5: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/5.jpg)
Algunas propiedades no funcionales₋ Reutilización₋ Facilidad de modificación₋ Facilidad de comprensión₋ Robustez₋ Eficiencia₋ Facilidad de uso
![Page 6: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/6.jpg)
Definición:₋ Patrón: Modelo que sirve de muestra para
sacar otra cosa igual (RAE).₋ Patrón de diseño: Una solución general a un
problema general que puede adaptarse a un problema concreto.
![Page 7: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/7.jpg)
Christopher Alexander - 1979 - The Timeless Way of Building.
Definió qué es un patrón de diseño Pattern Language. 1987, Ward Cunningham y Kent Beck Design Patterns - GoF
![Page 8: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/8.jpg)
![Page 9: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/9.jpg)
Según la escala o nivel de abstracción:₋ Patrones de arquitectura₋ Patrones de diseño₋ Patrones de Análisis₋ Patrones de bajo nivel(idiomas)
![Page 10: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/10.jpg)
La plantilla mas común es la utilizada por el GoF y consta de los siguientes apartados:₋ Nombre de patrón₋ Clasificación del patrón₋ Intención₋ Motivación₋ Aplicabilidad₋ Estructura₋ Participantes₋ Colaboraciones₋ Consecuencias₋ Implementación₋ Código de ejemplo₋ Patrones relacionados
![Page 11: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/11.jpg)
Clasificación de patrones del libro GoF:₋ Creacionales₋ Estructurales₋ Comportamiento
![Page 12: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/12.jpg)
Patrones creacionales:₋ Abstract Factory – (Fabrica abstracta)₋ Builder – (Constructor virtual)₋ Factory Method – (Método de fabricación)₋ Prototype – (Prototipo)₋ Singleton – (Instancia Única)
![Page 13: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/13.jpg)
Patrones estructurales:₋ Adapter – (Adaptador)₋ Bridge – (Puente)₋ Composite – (Objeto compuesto)₋ Decorator – (Envoltorio)₋ Facade – (Fachada)₋ Flyweight – (Pero ligero)₋ Proxy
![Page 14: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/14.jpg)
Patrones de comportamiento:₋ Chain of Responsability – (Cadena de
responsabilidad)₋ Command – (Orden)₋ Interpreter – (Interprete)₋ Iterator – (Iterador)₋ Mediator – (Mediador)
![Page 15: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/15.jpg)
Patrones de comportamiento:₋ Chain of Responsability – (Cadena de
responsabilidad)₋ Command – (Orden)₋ Interpreter – (Interprete)₋ Iterator – (Iterador)₋ Mediator – (Mediador)₋ Memento – (Recuerdo)₋ Observer – (Observador)₋ State – (Estado)₋ Strategy – (Estrategia)₋ Template Method – (Método plantilla)₋ Visitor – (Visitante)
![Page 16: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/16.jpg)
![Page 17: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/17.jpg)
En las próximas transparencias mostraremos los patrones más importantes que los alumnos deben saber, para desarrollar la mayor cantidad de problemas.
Estos son:₋ Strategy₋ State₋ Singleton₋ Composite₋ Template Method₋ Proxy₋ Observer₋ Iterator₋ Facade
![Page 18: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/18.jpg)
Intención:₋ Definir un grupo de clases que representan un
conjunto de posibles comportamientos. Estos comportamientos pueden ser fácilmente intercambiados en una aplicación modificando la funcionalidad en cualquier instante.
Motivación:₋ Estructurar una familia de algoritmos de modo
que sus clientes puedan intercambiarlos en tiempo de ejecución.
![Page 19: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/19.jpg)
![Page 20: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/20.jpg)
Participantes:₋ Istrategy: declara una interfaz común para todos
las variantes de un algoritmo₋ StrategyX: implementa una variable del
algoritmo₋ StrategyClient: es el responsable de crear y
mantener una referencia a una estrategia concreta.
Colaboraciones:₋ El cliente de la estrategia decide la estrategia a
crear.
![Page 21: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/21.jpg)
Intención:₋ Cambiar fácilmente el comportamiento de un
objeto en tiempo de ejecución.
Motivación:₋ Cambiar el comportamiento dependiendo del
estado.₋ Cuando queremos que un objeto cambie su
comportamiento, según cambia su estado, se presenta el problema de la complejidad de código.
![Page 22: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/22.jpg)
![Page 23: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/23.jpg)
Participantes:₋ Context: Define la Interfaz y mantiene una
instancia con el estado actual.₋ State: Define una interfaz para el
comportamiento asociado a un determinado estado del Contexto.
₋ ConcreteState: Cada subclase implementa el comportamiento asociado con un estado del contexto.
![Page 24: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/24.jpg)
Intención:₋ Garantizar que una clase sólo tenga una
instancia y proporcionar un punto de acceso global a ella.
Motivación:₋ Es importante que algunas clases tengan
exactamente una instancia. Ejemplo: aunque puede haber muchas impresoras en un sistema, sólo debería haber una cola de impresión.
₋ Una variable global hace accesible a un objeto, pero no nos previene de crear múltiples instancias de un objeto.
![Page 25: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/25.jpg)
![Page 26: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/26.jpg)
Participantes:₋ Singleton: Define una operación getInstance
que permite que los clientes, accedan a su única instancia. GetInstance() es una operación de clase (es decir en java, tiene el modificador static). Es el responsable de crear su única instancia.
![Page 27: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/27.jpg)
Consecuencias:₋ Acceso controlado a su única instancia. Puesto
que la misma encapsula su única instancia, puede tener un control estricto sobre cómo y cuándo acceden a ella los clientes.
₋ El patrón Singleton es una mejora sobre las variables globales. Ya que evita contaminar el espacio de nombres con instancias de clases.
₋ El patrón hace fácil cambiar de opinión y poder crear más de una instancia de la clase.
![Page 28: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/28.jpg)
Intención:₋ Componer objetos en jerarquías parte-todo y
permitir a los clientes tratar objetos simples y compuestos de modo uniforme.
Motivación:₋ Necesitamos representar un conjunto de
elementos de una interfaz gráfica de usuario.₋ Algunos de estos elementos son simples, mientras
que otros están formados por varios elementos más simples. El comportamiento y/o la información que proporciona un elemento complejo está determinada por los elementos que lo componen.
![Page 29: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/29.jpg)
![Page 30: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/30.jpg)
Participantes:₋ Client: Manipula objetos a través de la interfaz
proporcionada por Component.
₋ Component: Declara la interfaz para los objetos de la composición, es la interfaz de acceso y manipulación de los componentes hijo e implementa algunos comportamientos por defecto.
![Page 31: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/31.jpg)
Participantes:₋ Composite: Define el comportamiento de los
componentes compuestos, almacena a los hijos e implementa las operaciones de manejo de los componentes.
₋ Leaf: Definen comportamientos para objetos primitivos del compuesto.
![Page 32: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/32.jpg)
Colaboración:₋ Los clientes utilizan la interfaz de la clase
component para interactuar con los elementos de la estructura compuesta. Si el recipiente es una hora, se trata correctamente, sino se redirige la petición a sus hijos realizando operaciones adicionales
![Page 33: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/33.jpg)
Consecuencias:₋ Define jerarquías de clases formadas por
objetos primitivos y compuestos.₋ Simplifica al cliente, ya que puede tratar de
forma uniforme estructuras compuestas.₋ La desventaja de facilitar añadir nuevos
componentes es que hace difícil restringir los componentes de un compuesto.
![Page 34: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/34.jpg)
Intención:₋ Proporcionar un método que permite que las
subclases redefinan parte del método sin reescribirlo.
Motivación:₋ Cuando se construyen jerarquías de clases
complejas para una aplicación, a menudo se duplican distintas partes de código. esa situación no es deseable, porque la intención es reutilizar tanto código como sea posible
![Page 35: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/35.jpg)
![Page 36: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/36.jpg)
Participantes:₋ Client: Manipula objetos a través de la interfaz
proporcionada por Component.₋ AbstractTemplate: Implementa un método
plantilla que define el esqueleto de un algoritmo y define métodos abstractos que implementan las subclases concretas.
![Page 37: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/37.jpg)
Participantes:₋ ConcreteTemplate: Implementa los métodos
abstractos para realizar los pasos del algoritmo que son específicos de la subclase..
Colaboración:₋ Las clases concretas confían en que la clase
abstracta implemente la parte fija del algoritmo.
![Page 38: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/38.jpg)
Consecuencias:₋ Favorece la reutilización del código. Muy útiles
para construir bibliotecas, pues ayuda a factorizar el comportamiento común de las clases.
₋ Lleva a una estructura de control invertido (Principio de Hollywood): la superclase base invoca los métodos de las subclases.
![Page 39: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/39.jpg)
Intención:₋ Proporcionar un representante de otro objeto,
por distintas razones como pueden ser el acceso, la velocidad o la seguridad, entre otras.
Motivación:₋ Retrasar el coste de crear e inicializar un
objeto hasta que es realmente necesario. Por ejemplo, no abrir las imágenes de un documento hasta que no son visibles.
![Page 40: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/40.jpg)
![Page 41: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/41.jpg)
Participantes:₋ Subject: Define la interfaz común para el
RealSubject y el proxy, de modo que pueda usarse un Proxy en cualquier sitio en el que se espere un RealSubject.
₋ RealSubject: Define el objeto real representado.₋ Proxy: Mantiene una referencia que permite al
Proxy acceder al objeto real, Proporciona una interfaz idéntica a la del sujeto, de manera que un Proxy pueda ser sustituido por el sujeto real. Controla el acceso al sujeto real, y puede ser responsable de su creación y borrado.
![Page 42: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/42.jpg)
Consecuencias:₋ El patrón Proxy introduce un nivel de
indirección al acceso a un objeto. Esta indirección adicional tiene muchos posibles usos, dependiendo del tipo de proxy.
Intención:₋ Proporcionar a los componentes una forma flexible de
enviar mensajes de difusión a los receptores interesados.
![Page 43: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/43.jpg)
Motivación:₋ Muchas veces un efecto lateral de partir un sistema en una
colección de objetos relacionados es que necesitamos mantener la consistencia entre objetos relacionados.
![Page 44: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/44.jpg)
![Page 45: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/45.jpg)
Participantes:₋ Subject: Conoce a sus observadores,
Proporciona una Interfaz para que se suscriban los objetos Observer.
₋ Observer: Define una interfaz para actualizar los objetos que deben ser notificados de cambios en el objeto Subject.
₋ ConcreteSubject: Guarda el estado de interés para los objetos ConcreteObserver, envía una notificación a sus observadores cuando cambia su estado.
![Page 46: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/46.jpg)
Participantes:₋ ConcreteObserver: Mantiene una referencia
a un objeto ConcreteSubject, Guarda el estado que debería permanecer sincronizado con el objeto observado, Implementa la interfaz Observer para mantener su estado consistente con el objeto observado.
![Page 47: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/47.jpg)
Colaboraciones₋ El objeto observado notifica a sus
observadores cada vez que ocurre un cambio.₋ Después de ser informado de un cambio en el
objeto observado, cada observador concreto puede pedirle la información que necesita para reconciliar su estado con el de aquél.
![Page 48: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/48.jpg)
Intención:₋ Proporcionar una forma coherente de acceder
secuencialmente a los elementos de una colección, independientemente del tipo de colección subyacente.
Motivación:₋ Un objeto agregado, tal como una lista, debería
proveer un modo de brindar acceso a sus elementos sin exponer su estructura interna. Más aún, quizás se desea recorrer la lista en diferentes formas, dependiendo de lo que Ud. quiera realizar.
![Page 49: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/49.jpg)
![Page 50: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/50.jpg)
Participantes:₋ Iterador: Define una interfaz para recorrer los
agregados.₋ IteradorConcreto: implementa la interfaz
iterador.₋ Agregado: Define la interfaz para crear un
objeto iterador.₋ AgregadoConcreto: Implementa la interfaz
de creación de un iterador para devolver un iterador concreto.
![Page 51: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/51.jpg)
Colaboraciones:₋ Un iteradorConcreto almacena la posición del
objetoactual en el agregado de modo que sabe cual es el objeto siguiente en el recorrido.
![Page 52: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/52.jpg)
Intención:₋ Proporcionar una interfaz simplificada para un grupo de
subsistemas o un sistema complejo.
Motivación:₋ Simplificar el acceso a un conjunto de clases
proporcionando una única clase que todos utilizan para comunicarse con dicho conjunto de clases.
₋ Reducir la complejidad y minimizar dependencias
![Page 53: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/53.jpg)
![Page 54: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/54.jpg)
Participantes:
₋ Facade: Conoce cuales clases del subsistema son responsables de una petición y delega las peticiones de los clientes en los objetos del subsistema.
₋ Clases del subsistema: Implementan la funcionalidad del subsistema, manejan el trabajo asignado por el objeto Facade y además de esto no tienen ningún conocimiento del Facade.
![Page 55: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/55.jpg)
Consecuencias:₋ Oculta a los clientes el comportamiento del
subsistema, haciendo que este sea mas fácil de usar.
₋ Promueve un débil acoplamiento entre subsistemas
![Page 56: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/56.jpg)
Patrones de diseño. Clasificación de patrones. Historia Lista de Patrones Patrones más importantes. Ejercicios
![Page 57: Definir qué es un patrón de diseño. Cuándo utilizarlos. Clasificación de patrones. Patrones mas importantes. Ejemplos](https://reader035.vdocumento.com/reader035/viewer/2022081414/54a82ac1497959eb6d8b516e/html5/thumbnails/57.jpg)
GoF – Gang of Four