Curso de Patrones

El curso de patrones de diseño de software más completo de la Red
Material disponible
Avanzado
15 Clases 28 h
120€
99€
Precio en promoción
Los patrones de diseño de software aportan soluciones conocidas a problemas recurrentes en el desarrollo de todo tipo de aplicaciones, así como a la lista de smell codes vistos en diseño orientado a objetos. Permiten reutilizar diseños de software orientado a objetos de manera efectiva, para crear soluciones más flexibles y escalables, facilitando el mantenimiento. Su estudio se convierte en una visión práctica de los principios, leyes, … y objetivos del diseño orientado a objetos: KISS, modularidad, principios de sustitución de Liskov, Abierto/Cerrado de Meyer, ...

En teoría, todos con un poco de práctica podríamos llegar a diseños que solucionen de una manera adecuada los problemas de las aplicaciones, sin embargo, aplicar patrones específicos nos permite usar técnicas probadas, más accesibles a los desarrolladores. Los patrones de diseño de software facilitan la elección de alternativas de diseño evitando soluciones que comprometan la calidad del software. Además, gracias a los patrones podemos disponer de un catálogo de soluciones que seremos capaces de aplicar sistemáticamente y de manera recurrente, lo que mejorará el desempeño del equipo y la calidad de los proyectos, sobre todo, porque se elevará el vocabulario en las reuniones de diseño donde la comunicación es fundamental entre los miembros del equipo!

Qué aprenderé en el Curso de Patrones

  • Entre las competencias y conocimientos que vas a adquirir con la realización del Curso de Patrones se encuentran:

    • Detectar problemas de diseño
    • Saber qué patrón aplicar
    • Diagramar la solución
    • Aplicar el patrón en el código
  • Este es el catálogo de patrones que veremos:

    • Patrones Creacionales
      • Abstract Factory
      • Builder
      • Factory Method
      • Prototype
      • Singleton
    • Patrones Estructurales
      • Adapter
      • Bridge
      • Composite
      • Decorator
      • Facade
      • Flyweight
      • Proxy
    • Patrones de Comportamiento
      • Chain of Responsibility
      • Command
      • Interpreter
      • Iterator
      • Mediator
      • Memento
      • Observer
      • State
      • Strategy
      • Template Method
      • Visitor

Objetivos del curso

Aprender a detectar y entender los problemas de diseño, para saber en qué momentos es adecuado aplicar un patrón de diseño, evitar el sobrediseño (YAGNI). Una vez detectado el problema, saber qué patrón es el más adecuado para resolverlo y, finalmente, cómo debemos aplicarlo en el proyecto.

Conocer un amplio catálogo de patrones de diseño de software y sus características, la intención que nos llevaría a aplicar cada patrón, el diagrama de clases y sus colaboraciones, así como la implementación en código. Relacionar y utilizar unos patrones con otros, llegando a soluciones de elevada calidad.

Por qué debes aprender Patrones de diseño de software

Aprender patrones de diseño está bien pero ten muy en cuenta que no se trata simplemente de conocer un patrón y aplicarlo constantemente allá donde podamos. Hay que detectar un problema, pues no tiene sentido aplicar un patrón sin identificar los fallos de diseño y sus posibles mejoras.

Debes tener claro que las mejores soluciones de diseño resultan de la aplicación de varios patrones en conjunto. Un solo patrón puede ser útil en muchas situaciones, pero las aplicaciones reales necesitan muchas veces la aplicación de la suma de varios patrones para llegar a la mejor solución a una necesidad o problema detectado.

En este curso aprenderás el modo correcto de aplicar los patrones y saber perfectamente cuál o cuáles son los patrones de diseño de software que debes aplicar para resolver los problemas, cómo diagramar la solución y aplicarla en el código.

Aplicaremos casi todos los patrones en distintos ejercicios (TicTacToe, Supermercado, Comunicaciones, Simulador, …). En particular, a través del primero mostraremos la evolución del software mediante diversas versiones de requisitos, gráficos, distribuido y persistencia entre otras.

Qué tengo que saber

Para hacer este curso necesitas tener conocimientos sólidos de programación orientada a objetos así como de diseño orientado a objetos.

Clases y contenidos

Introducción a Patrones de diseño y patrón Singleton

En esta clase veremos la introducción a los patrones de diseño. Qué son, por qué los debemos de usar, cuándo y cómo los debemos de usar. En esta introducción también presentaremos las ideas y mecánicas del curso.

Además comenzaremos a ver nuestro catálogo de patrones con el patrón Singleton, que explicaremos en detalle, sobre sus objetivos, modo de implementar y demás.

Variantes de Singleton y patrón Abstract Factory

En esta clase hacemos un repaso de la introducción a patrones y vemos otros usos del patrón Singleton que no habíamos visto con detalle, o que no habíamos nombrado como el Multiplón. Además comenzamos con el siguiente patrón Abstract Factory.

Patrones creacionales

En esta clase veremos los patrones creacionales que nos quedan por ver. Recuerda que en la clase anterior vimos Singleton y Abstract Factory, de modo que los que nos quedan por ver son:

  • Builder
  • Factory Method
  • Prototype

Además comenzaremos con los patrones de diseño estructurales. En esta clase hemos visto:

  • Adapter
  • Bridge
Patrones de diseño estructurales

En esta clase continuamos viendo los patrones de diseño estructurales. En la clase anterior habíamos visto Adapter y Bridge y en esta clase hemos terminado el listado completo de los patrones estructurales del libro: Composite, Decorator, Facade, Flyweight, Proxy.

Patrones de Comportamiento

En esta clase comenzamos con los patrones de diseño de software clasificados como "de comportamiento". Veremos los primeros patrones de esta clasificación:

  • Chain of Responsibility
  • Command
  • Interpreter
  • Iterator
Otros patrones de diseño comportamentales

Seguimos avanzando en la definición y explicación de los patrones de diseño de comportamiento. En esta clase veremos Mediator, Memento, Observer y State.

Últimos patrones de comportamiento

En esta clase hacemos un repaso general a los patrones de diseño que hemos abordado a lo largo de todo el curso y completamos la lista de patrones con los últimos que nos quedaban:

  • Strategy
  • Template Method
  • Visitor Finalizamos el bloque de teoría de este curso con unas explicaciones sobre las motivaciones para aplicar patrones, cómo se deben aplicar, cuándo, cómo unos patrones se relacionan con otros, etc.
Patrones aplicados en un proyecto

En esta clase vamos a ver el proyecto que vamos a realizar en el curso, el TicTacToe, sobre el que venimos trabajando también en cursos anteriores y en el que hemos ido construyendo diversas mejoras y adaptaciones. Veremos que muchas de las mejoras realizadas durante cursos anteriores eran ya implementaciones de patrones de diseño, aunque no les habíamos puesto nombre. Aterrizaremos las ideas y los conceptos en vista del conocimiento adquirido hasta ahora y nos pondremos en un estado del proyecto donde ya podremos aplicar patrones más complejos.

Práctica de aplicación de patrones para permitir undo / redo

En esta clase vamos a ver cómo podríamos aplicar Undo / Redo en el juego del TicTacToe. Discutiremos qué patrones de diseño se podrían aplicar, por qué motivos. Luego veremos en el código cómo se implementan esos patrones de diseño, varios en conjunto, que serán necesarios para hacer un diseño adecuado para esta nueva funcionalidad.

Planteamiento de aplicación capaz de funcionar standalone y cliente / servidor

En esta clase veremos el planteamiento de la práctica del Mastermind que permite realizar undo / redo, corrigiendo el código presentado por estudiantes del curso. Además realizaremos el planteamiento de la aplicación del TicTacToe permitiendo ahora su funcionamiento en dos modalidades: 1) standalone, en el que toda la aplicación se encuentra de manera monolítica en el mismo sistema y 2) mediante cliente servidor, con comunicaciones entre ambos vía sockets.

Práctica de patrón proxy e incorporación de nuevos requisitos al proyecto

En esta clase solucionamos el código de una versión anterior en la que se habían ensuciado los controladores al tener que llevar el procesamiendo de dos modelos distintos de aplicación, standalone y cliente / servidor. Para ello aplicaremos el patrón proxy. Luego se plantean nuevos requisitos en los que se tendrá en cuenta la posibilidad de guardar partidas.

Versiones finales de la práctica y últimos patrones. Patrón DAO

En esta clase veremos cómo se implementa la versión final de la práctica del TicTacToe, aplicando los últimos patrones para resolver de una manera adecuada los requisitos finales. Veremos el patrón DAO, que no está en la lista de los 23 patrones del libro de Gamma, pero que nos ayuda a resolver necesidades comunes con la capa de persistencia.

Resumen patrones, dudas y planteamiento de nueva práctica

En esta clase vemos un resumen del enfoque correcto, a tener en cuenta para la aplicación de los patrones de diseño. Además hacemos el enunciado de un nuevo ejercicio práctico en el curso, basado en los tickets de una cadena internacional de sumermercados.

Resolución práctica supermercado internacional

En esta clase veremos cómo se resuelve la práctica propuesta de patrones de diseño para aplicación en el supermercado internacional.Repasamos primero una solución realizada por un estudiante para luego entrar en la solución propuesta por el profesor. En el último punto de la clase se expresa la práctica propuesta para finalización del curso.

Práctica final curso Patrones: Juego de las damas

Se propone la realización del juego de las damas, junto a alternativas de otras prácticas posibles, como se detalla en el repositorio de esta práctica. https://github.com/Master-Desarrollo-20-21/Patrones-de-dise-o---Juego-de-las-damas El código está realizado de manera muy completa por un estudiante y se revisa en la clase de manera bastante detallada

Valoraciones

David del Castillo Rodriguez

Victor Moreno

Sólo sé que no sabía nada

Daniel Bernal

Muy bueno....

Pedro Márquez Gomez

Muy buen curso

Eduardo Franco Gutierrez

Excelente

Gonzalo

Antonio José Sinoga

Por su experiencia, Luis tiene el conocimiento, y por su vocación docente, la manera de transmitirlo. Es el Profesor, en mayúscula.

xavier gomez canals

Joana Pérez Jiménez

MARIBEL NARGANES

Muy bueno, en la línea de Luis

MARTIN ALONSO CASTILLO

Muy bueno, completo, satisfactorio

Luis Enrique Magallanes Ocampo

¡Excelentes explicaciones!

Javier Jara Fuentes

Cristóbal Cobos Budia

Luis Fernández es un gran profesor. Sabe transmitir de una manera muy clara la información y sin necesidad de usar florituras en el lenguaje. Como él ya dice en varias de sus explicaciones.

Manuel Soberano

Excelente calidad del curso... como siempre viniendo de luis fernandez. Esta metodologia de ensenanza que esta aplicando, puedo confirmar me esta ayudando un monton

Jose

Paula Quitián Hernandez

Rubén Galán Jiménez

Agustin

Marc Torramilans Privat

Marcos Antonio Valencia Ramírez

V. HUGO VALLEJOS

Marcos Sánchez

Gran curso que forma parte de un excepcional Master dirigido y coordinado por buenos profesionales como son Miguel y Luis ..

Ana Santamaría Aparicio

Oro puro, como todos los cursos de Luis Fernández

Juan Caravaca

Manuel Malvar Tombo

Miguel Valiente

Programa completísimo, y de los que de verdad merece la pena hacer. Cambia por completo tu cabeza a la hora de desarrollar. Imprescindible.

jaimedocal@gmail.com

Magnifico curso, como todos los de Luis Fernández

Eduard Gallofré Asens

Manuel Alejandro Cano Champa

Excelente curso con el docente Luis, explica a profundidad y con fundamentos sólidos

Federico Estape

Un curso sencillamente brillante. Luis explica todo excelente, muy didáctico. Un placer tenerlo como profesor, ojalá dé muchos cursos más

Raul Martin Garces

Ingrid Carolina Peláez

Antonio Berbel Gonzalez

Luis es un gran profesor

Pedro Zamora

Jymmy Dextre Alarcon

Curso muy completo, teorico y luego practico.

Daniel Montero

Fernando Fuentes Perez

Antonio José Navarro Céspedes

Emilio Veras Ivanovich

Emmanuel Valdez

El manejo del tema del profesor es fenomenal.

Carlos

Gabriel Novoa

Cristian

Luis es el mejor!

Rene Zamorano

Excelente curso mas que recomendado, para que quienes como yo desean aprender los fundamentos y mejorar como profesionales

Maximiliano Pablo Perrone

Impresionante el contenido de este curso, recomendadisimo 100%

Antonio

Excelente curso, como todos los de Luis

Rubén Loureiro Bocija

Un placer seguir este curso. Luis Fernández habla siempre claro. El curso me parece ideal para no perderse con los patrones de diseño y tener claro que problemas resuelven y como nos pueden ayudar en nuestros proyectos.

Walter Osorio

Muy bueno el curso, excelente profesor.

¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 170 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.

Suscríbete