freeCodeCamp/guide/spanish/software-engineering/design-patterns/index.md

47 lines
3.7 KiB
Markdown

---
title: Design Patterns
localeTitle: Patrones de diseño
---
## Patrones de diseño
Los programadores y arquitectos de software utilizan patrones de diseño para resolver problemas **comunes y recurrentes** en la arquitectura de software. Los patrones proporcionan un enfoque independiente del **lenguaje para la programación orientada a objetos** que ayuda a los desarrolladores a seguir los principios del buen diseño de la aplicación.
### ¿Por qué patrones de diseño?
El desarrollo de patrones de diseño ofrece varias ventajas:
* Es más fácil seguir buenos principios de programación, como los **[principios de](https://medium.com/@cramirez92/s-o-l-i-d-the-first-5-priciples-of-object-oriented-design-with-javascript-790f6ac9b9fa) [SOLID](https://www.youtube.com/watch?v=XzdhzyAukMM) .**
* Mantiene los trozos de código más pequeños para que el código sea más fácil de **probar** y **depurar**
* Ayuda a mantener el código acoplado libremente para que el código sea más fácil de **reutilizar** y **actualizar** para nuevas aplicaciones
* Hace que el código sea más fácil de **entender** , por lo que los nuevos contribuyentes pueden **aumentar rápidamente**
El uso de patrones de diseño conlleva algunas concesiones, y los desarrolladores nuevos en la práctica deben recordar lo siguiente:
* No **hay balas de plata** en la programación, y los patrones de diseño no son una excepción
* Los patrones de diseño agregan una **capa de abstracción** al código que aumenta el diseño inicial y el esfuerzo de desarrollo
* El uso excesivo de los patrones de diseño o forzarlos a adaptarse hace que el código sea **más difícil** de entender
### Ayuda de idioma
Los patrones de diseño se originaron en el mundo de los lenguajes de tipo estático como C ++, Java y C #. La mayoría de los recursos sobre desarrollo por patrón de diseño se basan en uno de estos idiomas.
No obstante, los patrones de diseño son solo eso: patrones. No son **implementaciones** , como clases o interfaces, y **no** están **restringidas a ningún idioma** .
Al aprender patrones de diseño dentro de un lenguaje dinámico, si patrones particulares parecen innecesariamente complejos o contraintuitivos, recuerden sus orígenes. Los desarrolladores en lenguajes dinámicos todavía pueden usar y beneficiarse de los siguientes patrones de diseño, aunque es posible que se requiera más investigación para comprenderlos completamente.
### Usos
Los patrones de diseño son excelentes para resolver problemas de codificación fundamentales de una manera simple y repetible. En general, se dividen en tres categorías:
* **Los** patrones de **creación** describen cómo crear nuevos objetos.
* **Los** patrones **estructurales** describen cómo componer objetos de otros objetos
* **Los** patrones de **comportamiento** describen cómo los objetos se comunican entre sí.
Todas estas tareas pueden realizarse sin patrones de diseño, pero los patrones de diseño **reducen el riesgo de** que infrinja las buenas prácticas y cree un código que sea difícil de mantener.
#### Más información:
* Los [patrones de diseño para humanos de](https://github.com/kamranahmedse/design-patterns-for-humans) Kamran Ahmed es una excelente introducción a los patrones específicos.
* [Design Patterns](https://en.wikipedia.org/wiki/Design_Patterns) es el libro que inició esta práctica.
* Los [patrones de arquitectura de aplicaciones empresariales de](https://martinfowler.com/eaaCatalog/) Martin Fowler proporcionan un conjunto de patrones más sofisticados para aplicaciones empresariales
* Sourcemaking proporciona un [recurso en línea](https://sourcemaking.com/design_patterns) con ejemplos adicionales e información sobre patrones de diseño