47 lines
3.7 KiB
Markdown
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
|