Sesión 5: Patrones Creacionales (PDF)
Document Details
Uploaded by Deleted User
Tags
Summary
Esta sesión presenta los patrones creacionales de diseño de software Builder y Prototype. Se explica el concepto, características, usos comunes, estructura y ejemplos de cada patrón. Se describen las ventajas y desventajas de cada uno. El ejemplo de la construcción de una pizza ilustra la aplicación práctica del patrón Builder.
Full Transcript
PATRONES DE DISEÑO DE SOFTWARE PATRONES DE DISEÑO SEMANA 5: Patrones Creacionales 1. Patrón de Diseño Builder A. Concepto B. Características C. Uso común...
PATRONES DE DISEÑO DE SOFTWARE PATRONES DE DISEÑO SEMANA 5: Patrones Creacionales 1. Patrón de Diseño Builder A. Concepto B. Características C. Uso común D. Estructura E. Ejemplo F. Ventajas y Desventajas 2. Patrón Prototype A. Concepto B. Características C. Uso común D. Estructura E. Ejemplo F. Ventajas y Desventajas PATRONES DE DISEÑO PATRONES DE DISEÑO BUILDER CONCEPTO: El patrón de diseño Builder es un patrón PATRONES DE DISEÑO creacional cuyo propósito es separar la construcción de un objeto complejo de su representación, de manera que el mismo proceso de construcción pueda crear diferentes representaciones del objeto. En otras palabras, permite construir un objeto paso a paso, sin necesidad de conocer su estructura CONCEPTO: Este patrón se utiliza cuando un PATRONES DE DISEÑO objeto tiene muchos atributos o partes opcionales y deseas evitar una configuración compleja al momento de crear el objeto. Es muy útil en situaciones donde un objeto necesita ser configurado en múltiples etapas y requiere diferentes CARACTERSITICA S: 1. Separación de la construcción y la representación: El patrón permite que el proceso de PATRONES DE DISEÑO construcción de un objeto se separe de su representación final. 2. Creación de objetos complejos: Facilita la creación de objetos complejos que no pueden ser construidos con un simple constructor. 3. Flexibilidad: Es posible variar los componentes del objeto de manera fácil y rápida sin cambiar el código cliente. 4. Uso de una interfaz común: La USOS MAS COMUNES: El patrón Builder es comúnmente usado en escenarios donde: PATRONES DE DISEÑO La construcción de un objeto requiere una secuencia compleja de pasos. El objeto que se quiere construir tiene muchas variaciones y combinaciones posibles de atributos (por ejemplo, productos con diferentes configuraciones). Los parámetros que se EJEMPLO DE USOS MAS COMUNES: Construcción de una configuración PATRONES DE DISEÑO compleja de objetos (como un vehículo, una casa, o una interfaz gráfica). Generación de informes en aplicaciones con diferentes tipos de resultados visuales y de datos. ESTRUCTURA : 1- La interfaz Constructora declara pasos de construcción PATRONES DE DISEÑO de producto que 4 La clase Directora todos los tipos de define el orden en el que objetos constructores se invocarán los pasos de tienen en común. construcción, por lo que puedes crear y reutilizar configuraciones específicas de los 2 Los Constructores productos. Concretos ofrecen distintas implementaciones de los pasos de construcción. Los 5 El Cliente debe asociar uno de los objetos constructores constructores con la clase concretos pueden directora. Normalmente, crear productos que no se hace una sola vez siguen la interfaz mediante los parámetros común. 3 Los Productos del constructor de la clase directora, que utiliza el son los objetos objeto constructor para el resultantes. Los resto de la construcción. productos No obstante, existe una construidos por solución alternativa para distintos objetos cuando el cliente pasa el constructores no objeto constructor al tienen que método de producción de pertenecer a la la clase directora. En este VENTAJAS 1. Flexibilidad: Permite variar las representaciones de los objetos PATRONES DE DISEÑO de manera fácil y sin alterar el código del cliente. 2. Desacoplamiento: Separa la construcción de un objeto de su representación, haciendo que el proceso sea más modular y reutilizable. 3. Control de construcción: Ofrece un control detallado sobre cómo se crea el objeto, permitiendo configurar el proceso de creación paso a paso. 4. Facilidad para objetos DESVENTAJAS 1. Complejidad adicional: Introduce clases adicionales como los builders y el PATRONES DE DISEÑO director, lo que puede hacer que el código sea más complejo de entender y mantener. 2. Uso innecesario en objetos simples: Si el objeto es simple y no tiene una construcción compleja, usar el patrón Builder puede resultar innecesario y agregar sobrecarga. 3. Puede aumentar la cantidad de código: Cada tipo de EJEMPLO: Paso 1: Definir la clase Pizza (el ejemplo de la producto que se construye) construcción de una pizza aplicando el PATRONES DE DISEÑO patrón de diseño Builder paso a paso. El objetivo es permitir que el cliente seleccione diferentes características de la pizza, como el tamaño, Paso el tipola 2: Definir deinterfaz masa, y los (el constructor PizzaBuilder ingredientes. interfaz definirá abstracto).Esta los métodos para construir las diferentes partes de la pizza. EJEMPLO: Paso 3: Implementar el PATRONES DE DISEÑO ConcretePizzaBuilder (el constructor concreto). Este es el constructor real que implementa la construcción de la pizza. Paso 4: Definir el PizzaDirector (el director). Este es el encargado de coordinar el proceso de construcción, EJEMPLO: Paso 5: Cliente. Finalmente, el PATRONES DE DISEÑO cliente usa el PizzaDirector para construir una pizza paso a paso, eligiendo las opciones. Resultado en consola: El cliente está creando una pizza con tamaño grande, masa delgada, y con los ingredientes "Tomate", "Queso", "Jamon" y "Aceitunas". EJEMPLO: Explicación 1. El cliente inicializa el PizzaBuilder y el PizzaDirector. PATRONES DE DISEÑO 2. Luego, el cliente define las características de la pizza que desea: tamaño, tipo de masa y lista de ingredientes. 3. El PizzaDirector coordina la construcción de la pizza llamando a los métodos del ConcretePizzaBuilder para establecer cada propiedad. 4. Finalmente, se imprime la pizza construida con los detalles proporcionados. Este ejemplo muestra cómo aplicar el PATRONES DE DISEÑO PATRONES DE DISEÑO PROTOTYPE CONCEPTO: El patrón Prototype es un patrón creacional que se utiliza para crear objetos PATRONES DE DISEÑO basados en una instancia prototipo, permitiendo la clonación de objetos sin que el código cliente necesite saber cómo se crea el objeto o qué tipo de objeto es. Este patrón es útil cuando la creación de nuevos objetos es costosa o complicada y se pueden crear copias de un objeto preexistente (el prototipo) en lugar de crear un nuevo objeto desde cero. CARACTERISTICA S: 1. Clonación de objetos: El patrón PATRONES DE DISEÑO se basa en la capacidad de clonar (duplicar) un objeto para crear nuevos objetos. 2. Interfaz común: El prototipo debe tener una interfaz común que permita copiarse a sí mismo. Esto normalmente se logra mediante un método como CARACTERISTICA S: 3. Independencia de la construcción: El cliente no PATRONES DE DISEÑO necesita preocuparse por la creación o configuración del objeto, solo clona el prototipo. 4. Desacoplamiento de la creación de objetos: El código cliente no necesita saber cómo se crea el objeto, solo USOS MAS COMUNES: Se necesita crear muchos objetos similares pero no idénticos. PATRONES DE DISEÑO La creación de un nuevo objeto es costosa, por ejemplo, en términos de rendimiento, recursos o tiempo. Los objetos tienen una estructura interna compleja y, en lugar de crear nuevos objetos desde cero, se pueden clonar y luego modificar ligeramente. Se desea mantener una EJEMPLOS COMUNES DE USO: En videojuegos, cuando se necesita crear clones de personajes con PATRONES DE DISEÑO características similares (por ejemplo, diferentes versiones de un mismo personaje con leves diferencias en su salud o habilidades). En gráficos o diseño 3D, donde crear instancias de objetos complejos (como edificios, árboles, etc.) a menudo se hace clonando un prototipo. En la creación de ESTRUCTURA : 1- La interfaz Prototipo declara los métodos de clonación. En la mayoría de los casos, se trata de un único método clonar. PATRONES DE DISEÑO 3- El Cliente puede producir una copia de cualquier objeto que siga la interfaz del 2- La clase Prototipo prototipo. Concreto implementa el método de clonación. Además de copiar la información del objeto original al clon, este método también puede gestionar algunos casos extremos del proceso de clonación, como, por ejemplo, clonar objetos vinculados, deshacer dependencias recursivas, etc. VENTAJAS 1. Reducción de costos de creación: Cuando la creación de un objeto es PATRONES DE DISEÑO costosa, clonar un prototipo puede ser mucho más eficiente. 2. Mayor flexibilidad: Se puede clonar un objeto y modificarlo ligeramente, evitando la necesidad de configurar manualmente cada atributo. 3. Desacoplamiento: El cliente no necesita conocer la implementación interna DESVENTAJAS 1. Clonación compleja: Si el objeto tiene muchos recursos internos o referencias a otros objetos, la PATRONES DE DISEÑO clonación puede ser más compleja (por ejemplo, si el objeto tiene referencias a otros objetos que también necesitan ser clonados, el clon tendrá que realizarse de manera profunda). 2. Requiere un método de clonación robusto: Si no se implementa correctamente, la clonación puede generar errores o duplicados incorrectos de los objetos. 3. Difícil de implementar en algunos lenguajes: Algunos lenguajes de EJEMPLO: PASO1: Definir la interfaz Vehicle (prototipo base)Esta interfaz define Ejemplo donde el método clone(), que será utilizamos el implementado por cada prototipo PATRONES DE DISEÑO Patrón de Diseño concreto de vehículo. Prototype para crear diferentes tipos de vehículos y clonarlos rápidamente. El objetivo será crear un prototipo para cada tipo de vehículo (por ejemplo, Carro y Moto) y luego clonarlos para generar nuevos EJEMPLO: PASO2: Crear los prototipos concretos de PATRONES DE DISEÑO vehículosDefinimos los prototipos concretos Car y Motorcycle que implementan el método clone(). EJEMPLO: PASO3: El ClienteEl cliente utiliza los PATRONES DE DISEÑO prototipos para crear nuevos vehículos clonados y modificar sus atributos si es necesario. EJEMPLO: Explicación 1. Prototipo Vehicle: Es una clase base abstracta que define el método clone(), el cual debe ser PATRONES DE DISEÑO implementado por cada prototipo concreto. 2. Prototipo Car: Implementa el método clone() para permitir la creación de una copia superficial del objeto Car. Además, tiene atributos como model y color. 3. Prototipo Motorcycle: Similar al Car, pero con atributos como model y engine_capacity. 4. Cliente: El cliente crea instancias de los prototipos originales (original_car y original_motorcycle) y luego clona esos objetos. Después de clonarlos, cambia las características de los objetos clonados (como el color del coche y la capacidad del motor de la moto). 5. Resultado: Los objetos clonados mantienen las PATRONES DE DISEÑO ES CONCLUSION “El patrón Builder permite la construcción de objetos complejos paso a paso, ofreciendo PATRONES DE DISEÑO flexibilidad y claridad en su creación. Este patrón es útil cuando la creación de un objeto debe realizarse de manera independiente de su clase y cuando hay múltiples representaciones de un mismo tipo de objeto. Por otro lado, el patrón Prototype facilita la creación de nuevos objetos clonando instancias existentes, lo que mejora el rendimiento y simplifica la PATRONES DE DISEÑO LINKS DE INVESTIGACI ON https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/patron-de-diseno- builder/?srsltid=AfmBOopZpgfvW3ZfGWwMU65pIY0UAZXPtGxfZiPEXhAnZ3ZoRjYXO8xv PATRONES DE DISEÑO https://refactoring.guru/es/design-patterns/builder/java/example https://octaviorobleto.com/patron-de-diseno-builder/ https://medium.com/@diseniio2016/patr%C3%B3n-de-dise%C3%B1o-prototype-8447ee 519165 https://reactiveprogramming.io/blog/es/patrones-de-diseno/prototype https://refactoring.guru/es/design-patterns/prototype/java/example https://belatrix.globant.com/us-en/blog/tech-trends/prototype-design-pattern/ https://www.youtube.com/watch?v=lyOGDHciNmk https://www.youtube.com/watch?v=ZF-kwXUSaZk PATRONES DE DISEÑO ACTIVIDAD A DESARROLLAR APLICAR EL PATRON BUILDER Y PROTOTYPE: Con el ejemplo en los videos 1. Java PATRONES DE DISEÑO 2. C# La actividad es individual Presentar el trabajo resuelto en PPT Presentar el archivo (C# /JAVA) Enviar la actividad al correo: [email protected], [email protected] Fecha de entrega: 17/01/2025 En el correo: asunto: ACT5_BUILDER_PROTOTYPE_sección: