freeCodeCamp/guide/spanish/agile/design-patterns/index.md

3.9 KiB

title localeTitle
Design Patterns Patrones de diseño

Patrones de diseño

Un patrón de diseño es una solución de diseño común a un problema de diseño común. Una colección de patrones de diseño para un campo o dominio relacionado se denomina lenguaje de patrones. Tenga en cuenta que también hay patrones en otros niveles: código, concurrencia, arquitectura, diseño de interacción ...

En ingeniería de software, un patrón de diseño de software es una solución general reutilizable a un problema que ocurre comúnmente dentro de un contexto dado en el diseño de software. No es un diseño terminado que se pueda transformar directamente en código fuente o máquina. Es una descripción o plantilla sobre cómo resolver un problema que se puede utilizar en muchas situaciones diferentes. Los patrones de diseño se formalizan según las mejores prácticas que el programador puede usar para resolver problemas comunes al diseñar una aplicación o sistema.

Los patrones de diseño orientados a objetos generalmente muestran relaciones e interacciones entre clases u objetos, sin especificar las clases de la aplicación final u objetos que están involucrados. Los patrones que implican un estado mutable pueden no ser adecuados para los lenguajes de programación funcionales, algunos patrones pueden hacerse innecesarios en los lenguajes que tienen soporte incorporado para resolver el problema que están tratando de resolver, y los patrones orientados a objetos no son necesariamente adecuados para no objetos. Lenguajes orientados.

Los patrones de diseño pueden verse como un enfoque estructurado para la programación de computadoras intermedias entre los niveles de un paradigma de programación y un algoritmo concreto.

El libro que popularizó el campo es Patrones de diseño de Gang of Four (GoF) : Elementos de software orientado a objetos reutilizables (1994). Presenta una serie (23) de patrones para un lenguaje OO convencional (C ++) clasificado en tres tipos:

  • Creación (para crear objetos): fábrica abstracta, generador, método de fábrica, prototipo, singleton.
  • Estructural (para componer objetos): adaptador, puente, compuesto, decorador, fachada, peso mosca, proxy.
  • Comportamiento (para comunicarse entre objetos): cadena de responsabilidad, comando, intérprete, iterador, mediador, memmento, observador, estado, estrategia, método de plantilla, visitante.

Los patrones se pueden usar para múltiples objetivos (aprendizaje, comunicación, mejora de sus herramientas) pero en ágil deben ser refactorizados del código con deuda técnica y no solo agregados al inicio (diseño / arquitectura emergente) ya que inicialmente no tiene suficiente conocimiento sobre el sistema (futuro) que va a evolucionar. Tenga en cuenta que lo que requiere un patrón en un idioma o herramienta puede no ser necesario o ya ser parte de otro idioma o herramienta. Un marco es un conjunto de clases cooperativas que conforman un diseño reutilizable para un tipo específico de software y suelen tener muchos patrones.

Más información: