©2024 Escuela Tecnologías de la Información S.L. Todos los derechos reservados.
Fundamentos de los Patrones de Diseño de Software
Resuelve problemas comunes en cualquier proyecto y domina esta excelente herramienta para mejorar la calidad del software y la productividad de un equipo
Material disponible
En el mundo del desarrollo podríamos identificar decenas o cientos de patrones de diseño útiles pero hay una selección de ellos que resulta especialmente universal. Son aquellos que se incluyen en el libro de Patrones de Diseño de Software de Erich Gamma y que se abordan de manera teórica en este curso de Fundamentos de los Patrones de Diseño de Software.
El curso de Fundamentos de Patrones de Diseño es una colección de vídeos cortos donde se explica cada patrón de diseño de manera independiente, junto con diversos conocimientos de diseño esenciales para entenderlos y aplicarlos. Los vídeos que encontrarás en este curso están extraídos de tres de las clases del Máster de Programación y Diseño de Software, concretamente del Módulo de Patrones.
El curso de Fundamentos de Patrones de Diseño es una colección de vídeos cortos donde se explica cada patrón de diseño de manera independiente, junto con diversos conocimientos de diseño esenciales para entenderlos y aplicarlos. Los vídeos que encontrarás en este curso están extraídos de tres de las clases del Máster de Programación y Diseño de Software, concretamente del Módulo de Patrones.
Qué aprenderé en el Fundamentos de los Patrones de Diseño de Software
Objetivos del curso
Por qué debes aprender Patrones de Diseño de Software
Qué tengo que saber
Es necesario tener conocimientos medios o avanzados de programación y tener claros los conceptos de diseño de software, diseño modular y diseño orientado a objetos.
Clases y contenidos
En este vídeo vamos a ver cuáles son los objetivos de las clases de este curso, dedicadas a la teoría de los patrones de diseño. Veremos además cuáles son los puntos que abordaremos de cada patrón de manera sistemática a lo largo de los siguientes vídeos.
En este vídeo estudiaremos el patrón "Fachada", estructural, que soluciona problemas de cohesión y acoplamiento de una clase, ofreciendo una interfaz unificada a un conjunto de interfaces de un subsistema.
Este es un patrón más bien dedicado a la optimización del software que se basa en ofrecer un mecanismo de compartir objetos para soportar de manera eficiente un gran número de objetos de grano fino.
El adaptador es un patrón sencillo pero muy útil para resolver el smell code de "librería incompleta", convirtiendo la interfaz de una clase en otra interfaz que pueda resolver correctamente nuestras necesidades.
Este patrón de diseño de comportamiento pensado para memorizar el estado de un objeto a lo largo del tiempo, sin romper su encapsulación. Se puede usar para llevar una memorización de los estados y trabajo con funcionalidades de undo / redo.
En este vídeo se hace una pausa para explicar cómo se han clasificado los patrones de diseño para esta exposición, abordando explicaciones y conceptos de diseño modular.
Este es uno de los patrones más simples donde se usa un esquema elemental de herencia para resolver problemas de cohesión en una clase, por medio de la definición de un esqueleto del algoritmo realizado apoyado en métodos abstractos, que se definen en las derivadas.
Es un patrón creacional que se basa en la idea del Template Method para aumentar la cohesión de clases que se dedican a crear objetos, unos u otros dependiendo de unas condiciones.
Es un patrón de diseño que resuelve un problema extraordinariamente frecuente en el software y en la vida real: cómo realizar el software de modo que no nos importe si estamos lidiando con un elemento individual o una agrupación de elementos.
En este caso encontramos un patrón de diseño estructural que trata de resolver la gestión de tratamientos distintos debidos a la accesibilidad de los elementos con los que necesito trabajar.
Se trata de un patrón de diseño que se encarga de suministrar elementos de una estructura sin que nos importe cómo es esa estructura, o que ella pueda cambiar.
Es un patrón de comportamiento que se encarga de aliviar problemas de cohesión derivados a la complejidad del código cuando se tiene que operar de maneras distintas dependiendo del estado de los objetos.
En este caso nos encontramos ante un patrón que trata de resolver problemas de cohesión cuando tenemos que usar estrategias distintas en una familia de algoritmos, encapsulando cada uno en clases que permite que sean intercambiables y variables dependiendo de los clientes que los van a usar.
Es un patrón estructural que mejora la cohesión, acoplamiento y tamaño cuando estamos ante jerarquías de herencia paralelas.
En este vídeo comenzamos la segunda sesión de patrones, con un repaso de todos los patrones anteriores.
Es un patrón de comportamiento que hace una modularización por método para mejorar la cohesión y el tamaño. Para ello representa operaciones a realizar sobre elementos sin realizar cambios en las clases de los elementos con los que opera.
Este patrón realiza una modularización por evento evitando problemas de acoplamiento, de modo que, cuando ocurren cambios en el estado de un elemento, se pueda notificar a todos los que necesiten saberlo.
El patrón Decorador permite modularizar por subtarea, pudiendo dividir el código en varias clases que permiten realizar partes de una tarea, combinables entre sí para resolver problemas de todos los tamaños.
La cadena de responsabilidad nos permite realizar también una descomposición por subtarea, definiendo secuencias versátiles y maleables para resolver situaciones donde existen diversos agentes resolutores.
El patrón Comando permite realizar una descomposición por subtarea mediante la encapsulación de una petición como un objeto. Consigue que una clase tenga que estar acoplada a un grupo de clases, siendo poco cohesiva y tendiendo a crecer demasiado.
Estamos ante un patrón de diseño de comportamiento que permite definir una representación de la gramática de un lenguaje y la interpretación de las sentencias de ese lenguaje.
Al inicio de la tercera sesión se realiza un repaso de los 18 patrones de diseño que llevamos explicados.
Es un patrón de diseño creacional que permite crear familias de objetos relacionados entre sí sin tener que preocuparse por la clase concreta que los necesita.
Este es un patrón creacional que usa el concepto de prototipo para permitir resolver las tareas de creación de objetos o familias de objetos mediante copias de los prototipos.
El patrón Builder es útil cuando la construcción de los objetos comienza a ser un problema, porque sea muy compleja, separando la construcción de los objetos de su representación.
El patrón Mediador resuelve que en ciertas organizaciones todos los objetos tengan que conocerse a todos, estableciendo uno o varios mediadores en los que nos apoyaremos para realizar las tareas.
Con el patrón Singleton queremos asegurarnos que una clase solamente tenga una instancia a lo largo de la aplicación y a la vez que se provee de un punto de acceso global al objeto.
En este vídeo se ofrecen conclusiones generales de los patrones de diseño y cómo éstos ayudan a mejorar el diseño modular.
Brevemente se explica cómo unos patrones se relacionan con otros, demostrando que la aplicación de patrones en la mayoría de casos no se da de manera individual, sino que lo normal es que aplicando varios a la vez se consiga un buen diseño.
En este vídeo se muestra el procedimiento de aplicación de los patrones de diseño recogidos en el libro de patrones por excelencia, el de Gamma.
Valoraciones
Enrique Gálvez
Un gusto tener las explicaciones de Luis para un tema tan delicado como los patrones, en vídeos cortos que nos ayudan a repasar cada patrón.
Maria García Huertas
Una referencia para tener muy cerca de los patrones de diseño. Siempre que tengo dudas lo repaso para aclararme de los patrones antes de usarlo...
¿Conoces nuestra tarifa plana?
Toda la formación de EscuelaIT, con más de 200 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.