martes, 31 de diciembre de 2024

Introducción a Patrones de Diseño

 Tal como hablé en otro post, tenemos 2 conceptos: Patrones Arquitectónicos y Patrones de Diseño de Software. Me enfocaré en este último en esta serie de post.

Los patrones de diseño son soluciones habituales a problemas frecuentes en el desarrollo de software. Siempre me ha encantado la analogía, el cual dice, que son como planos para construir un puente, en donde, se considera: 

  • El tráfico de personas o vehículos
  • condiciones climáticas
  • el entorno geográfico
  • etc.
Estos patrones no son porciones de código que puedan llegan a copiarse y pegar en nuestro proyecto, sino más bien, son conceptos que deben de entenderse, asimilarse y luego implementar en tu proyecto según la naturaleza de tu proyecto.



¿En qué consiste un patrón?

La gran mayoría son descritos para que puedan ser reproducidos en el contexto que a ti te envuelve. Y esta descripción contiene estas secciones:
  • Propósito: Explica el problema y la solución.
  • Motivación: Explica en detalle el problema y la solución brindada.
  • Estructura: Indica una estructura de clases y su relación.
  • Código:  Es un ejemplo  para facilitar la asimilación.

Clasificación de los patrones

Debido a que un patrón varía en su complejidad y el objetivo a resolver es que surgen 3 grupos:
  1. Patrones Creaciones: Ofrecen mecanismos para creación de objetos y facilitan la flexibilidad y reutilzación de código.
  2. Patrones Estructurales: Explican como se ensamblan los objetos y clases para mantener la flexibilidad y eficiencia
  3. Patrones de Comportamiento: Buscan una comunicación efectiva y la asignación de responsabilidades entre los objetos.

En otro post abordaré cada vez mas amplio estos conceptos. Nos vemos en el siguiente post.

PATRONES ARQUITECTÓNICOS y PATRONES DE DISEÑO. Es lo mismo?

Quiero compartir una pequeña introducción a este tema. Muchas veces se confunde patrones de diseño con patrones arquitectónicos.

Patrones de Diseño

Un patrón de diseño son soluciones habituales a problemas que ocurren con frecuencia en el diseño de piezas, módulos, etc. Estos patrones no son código que puedas llegar y copiar, más bien, es una conceptualización que tu podrás adaptar para encajar a la resolución que buscas en tu aplicación.   Acá voy a mencionar algunos que he tenido la oportunidad de usar: 

  • fachada, 
  • abstract factory,
  • singleton,
  • fábrica.
  • entre otros
Existen muchos más que te recomiendo revisar en el libro REFACTORING GURU (muy bueno). En otros post voy a ir desarrollando mas este tema, con su tipos y características.

PatronesArquitectónicos

Se enfocan en la resolución de problemas en aplicaciones completas a más alto nivel para obtener la mejor performance, asegurar que tenga escalabilidad, soporte latencia, tolerancia a fallos, etc. Aquí puedo mencionar algunos de estos patrones:
  • microservicios, 
  • EDA (Event Driven Architecture)
  • Capas, 
  • MVC, 
  • CQRS, 
  • entre otros.

Los patrones arquitectónicos pueden aplicar patrones de diseños para su implementación en sus piezas más pequeñas.
No confundir tampoco con las buenas prácticas de desarrollo como lo son SOLIC que quizás voy a compartir en otro post.



Este es un resumen muy breve, si quieres agregar más a esto: bienvenido y gracias. Espero tus comentarios 👇