No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Qué es un patrón de diseño

30/42
Recursos

Son soluciones generales ya probadas dentro de un contexto que las limita a problemas frecuentes que nos encontramos en el desarrollo de software.

Aportes 73

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Patrón de diseño

Ir a la navegaciónIr a la búsqueda

Los patrones de diseño son unas técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.1

Objetivos de los patrones

Los patrones de diseño pretenden:

  • Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
  • Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
  • Formalizar un vocabulario común entre diseñadores.
  • Estandarizar el modo en que se realiza el diseño.
  • Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.

Asimismo, no pretenden:

  • Imponer ciertas alternativas de diseño frente a otras.
  • Eliminar la creatividad inherente al proceso de diseño.

No es obligatorio utilizar los patrones, solo es aconsejable en el caso de tener el mismo problema o similar que soluciona el patrón, siempre teniendo en cuenta que en un caso particular puede no ser aplicable. “Abusar o forzar el uso de los patrones puede ser un error”.

Volver a aprender el diseño CSS

Si te encuentras luchando con el diseño CSS, es probable que estés tomando decisiones sobre los navegadores que deberían tomar ellos mismos. A través de una serie de diseños simples y componibles , cada diseño le enseñará cómo aprovechar mejor los algoritmos integrados que potencian los navegadores y CSS.

Emplear un diseño de diseño algorítmico significa eliminar los @mediapuntos de interrupción, los " números mágicos " y otros trucos para crear componentes de diseño independientes del contexto. Sus futuros sistemas de diseño serán más consistentes, tendrán menos código y serán más maleables en manos de sus usuarios y sus dispositivos.

Historia[editar]

En 1979 el arquitecto Christopher Alexander aportó al mundo de la arquitectura el libro The Timeless Way of Building; en él proponía el aprendizaje y uso de una serie de patrones para la construcción de edificios de una mayor calidad, en la que esa mayor calidad se refería a la arquitectura antigua y la menor calidad correspondía a la arquitectura moderna, que el romper con la arquitectura antigua había perdido esa conexión con lo que las personas consideraban que era calidad.

En palabras de este autor, "Cada patrón describe un problema que ocurre infinidad de veces en nuestro entorno, así como la solución al mismo, de tal modo que podemos utilizar esta solución un millón de veces más adelante sin tener que volver a pensarla otra vez."
Los patrones que Christopher Alexander y sus colegas definieron, publicados en un volumen denominado A Pattern Language, son un intento de formalizar y plasmar de una forma práctica generaciones de conocimiento arquitectónico. Los patrones no son principios abstractos que requieran su redescubrimiento para obtener una aplicación satisfactoria, ni son específicos a una situación particular o cultural; son algo intermedio. Un patrón define una posible solución correcta para un problema de diseño dentro de un contexto dado, describiendo las cualidades invariantes de todas las soluciones. Dentro de las soluciones de Christopher Alexander se encuentran cómo se deben diseñar ciudades y dónde deben ir las perillas de las puertas.

Más tarde, en 1987, Ward Cunningham y Kent Beck, sobrepasados por el pobre entrenamiento que recibían los nuevos programadores en orientación a objetos, se preguntaban cómo se podían capturar las buenas ideas para, luego de alguna manera, traspasarlas a los nuevos programadores recién instruidos en herencia y polimorfismo. Leyendo a Alexander se dieron cuenta del paralelo que existía entre la buena arquitectura propuesta por Alexander y la buena arquitectura OO, de modo que usaron varias ideas de Alexander para desarrollar cinco patrones de interacción hombre-ordenador (HCI) y publicaron un artículo en OOPSLA-87 titulado Using Pattern Languages for OO Programs.

No obstante, no fue hasta principios de la década de 1990 cuando los patrones de diseño tuvieron un gran éxito en el mundo de la informática a partir de la publicación del libro Design Patterns escrito por el grupo Gang of Four (GoF) compuesto por Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, en el que se recogían 23 patrones de diseño comunes.

Los patrones de diseño son un tema apasionante y obligatorio para ser un profesional. Aun así, no me puede parecer mas acertado el dicho del martillo.

Yo suelo decir, no arranques la moto para ir a comprar pan (a la esquina).

"Cuando lo que tienes es un martillo, todo te parece un clavo. "

La mejor frase del mundo.

Les comparto los enlaces de la clase. 🤓

https://every-layout.dev/layouts/stack/

https://mediaqueri.es/

me encanta estos temas, es el tipo de cosas que hacen la diferencia de platzi con los demás

Mi dicho para estos casos es: “No hay que matar moscas con bazucas”

Por si alguno desea profundizar un poco más en los multiples patrones de diseño que existen y ejemplos prácticos de como aplicarlos en JavaScript. DoFactory es un sitio muy muy bueno y nos permite obtener un conocimiento más amplio de este tema, asi como de algunos patrones que se tocan en este curso, también de el resto que no se utilizan en el curso. Espero les sirva de ayuda así como lo fue para mi 😃

https://www.dofactory.com/javascript/design-patterns

Los patrones de diseño

Segun wikipedia, Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Esta es una definición que considero correcta ya que cuando conoces un patrón, puedes ver inmediatamente dónde puede serte útil. En resumen y de forma sencilla, un patrón de diseño es una manera de resolver un problema. Un patrón de diseño debe cumplir al menos con los siguientes objetivos

  1. Estandarizar el lenguaje entre programadores
  2. Evitar perder tiempo en soluciones a problemas ya resueltos o conocidos
  3. Crear código reusable (excelente ventaja)

When what you have is a hammer, everything seems like a nail.

😃

Excelnte.

Cuando tienes un martillo, todo te parece un clavo, y eso es cierto a mi me ha pasado!!

Patrones de diseño

Los patrones de diseños son como resetas que nos instruyen a la hora de resolver un problema

Una solución para un problema dentro de un contexto

  • El contexto es la situación donde el aplica.
  • Esta situación debe ser recurrente.
  • Debe adaptarse a la meta que estas tratando de alcanzar dentro del contexto.
  • El problema incluye todas las limitaciones que existen dentro de este contexto.
  • Un diseño generico que alcanza la meta de este contexto.

Ejemplos:

  • Vista la web Every Layout: Te describe diferentes soluciones (patrones) y cada patrón:

    • Tiene nombre.
    • Un problema.
    • Una solución.
  • Al final del día nos indica como acomodar los elementos de una página y tal vez no sea un tema de software con Javascript sin embargo siguen siendo patrones de diseño, en este caso de CSS.

  • Visita la web Media Queries: Es este caso un ejemplo de Patrones de diseño? realmente esta indicando como se debaría adaptar las webs en distintos tamaños de pantalla, pero no está categorizado y tampoco está presentando exactamente un paso a paso, solo otorga unos tips o galería visual de los casos.

Idea principal

Los patrones de diseño fueron construidos con el fin de dar ciertas pautas a situaciones recurrentes y no llegar a reinventar la rueda y a su vez implementar un mismo lenguaje entre los desarrollodores o programadoras.

Beneficios

  • Sirve como caja de herramientas para soluciones bien probadas para problemas comunes.
  • Como lenguaje de interacción entre tus compañeros a la hora de dar solución a una situación.

OjO

  • No todo es color de rosas tal vez en algún momento torne un poco de complejidad a la hora de aplicarlo y es una de las criticas ante este caso.
  • Pero no vamos a estar utilizando patrones de diseño todo el tiempo, siempre vamos a tratar de solucionar las cosas de una forma simple y que el uso de estos patrones se convierta en algo natural y no en una camisa de fuerza.

"Cuando lo que tienes es un martillo, todo todo te parece un clavo"

Blog Recomendado

Esa frase de “Cuando lo que tienes es un martillo todo te parece un clavo” es una joya. Recordemos que no todo en tecnología es software y código.

Excelente clase.

Aquí se toca algo muy importante, aprendí sobre patrones de diseño en el curso de buenas prácticas de escritura de código (lo recomiendo), y es que no hay que resolver todo con ellos, solo cuando sea necesario, porque si siempre pensamos en usarlos, acabaremos haciendo un problema más grande que el que se quiere resolver

Les dejo un link SÚPER bueno para entender los Patrones de Diseño.
https://refactoring.guru/es/design-patterns

Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características.

  1. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores.
  2. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias

muy buena clase

en el minuto 6:36, donde dice:“son soluciones a las limitaciones de un lenguaje de programacion” … yo le agregaria “paradigma/lenguaje”

hay ciertos patrones que solo son validos y resuelven problemas que se dan principalmente en la POO y hay otros que solo sirven en la Programacion Funcional, mas alla del lenguaje que utilicemos, es una cuestion mas bien del paradigma que usemos para solucionar un problema.

Como conclusión a esta clase tengo que “los patrones ayudan a estandarizar el código, haciendo que el diseño sea más comprensible para otros programadores”. Y según todos los profesionales que conozco no hay nada más importante que la comprensión del código. ¡Gran clase!

Agradezco cuando se habla de algo más que desarrollo de software para explicar un concepto o cuando se cuenta un poco de historia acerca del tema. Ojalá fuera así más seguido.

Súper interesante… No sabía que existían esos libros, quisiera conocerlos :p

Gracias!!

en pocas palabras se hace uso de un patron de disenno como ultima opcion… primero se resuelve con tus propias habilidades y conocimientos.

Patrón de diseño: Repite y es recurrente.

Creo que este video debería estar antes. El video anterior a este hablan de implementación de Singleton, y el siguiente es este, que define qué es un Patrón de Diseño.

Es cierto, me ha pasado en el desarrollo con otras personas que siempre quieren agregar un patrón de diseño a cada proyecto aún si este no lo necesita.

Buenas Clases, Son las mejores

Patterns Design es el peldaño mas alto de la forma correcta de hacer POO, en la mayorias de los casos

Este es una web que habla sobre patrones:
patters.dev

Les comparto esta pagina en la cual pueden ver una buena explicacion y ejemplos de patrones de Diseno, sin duda una parte muy importante para que mejores la calidad de tu codigo
https://refactoring.guru/es/design-patterns/catalog

Son recetas que resuelven problemas que nos enfrentamos frecuentemente en el diseno de software.

Una solucion para un problema dentro de un contexto.

  • El contexto es la situacion donde el patron aplica.
  • Esta situacion debe ser recuerrente.
  • Se refiere a la meta que esta tratando de alcanzar dentro del contexto
  • El problema incluye todas las limitaciones que existen dentro de ese contexto.
  • Un diseno generico que alcanza la meta dentro del ccontexto

Beneficios

  • Los patrones de diseno son una caja de herramientas de soluciones bien probadas a problemas comunes en diseno de software
  • Te proveen un lenguaje comun que permite comunicarse de forma especifica y eficiente

Critica

  • Los patrones de diseno son una forma de complejidad
  • Son soluciones a las limitaciones de lenguaje de programacion
  • “Cuando todo lo que tienes es un martillo, todo te parece un clavo”
  • HAY QUE EVITARLOS, USALOS CUANDO ES NECESARIO

Conclusion

  • Siempre busca pensar en terminos de diseno, no de patrones
  • Usa un patron cuando hay una necesidad natural para usarlos
  • Si existe una alternativa mas simple, prefierela





Esta sección me gusta a partir de lo que el Profesor nos enseña. Vamos pues!

De nuevo viendo esta parte del curso para repasar.

Excelente clase.

Muy buena Clase!! En realidad manejar estos lenguajes comunes da mucho profesionalismo por que no solo es los problemas que resolvamos sino ver como se resuelven profesionalmente, y que es lo comun

Excelente.

Excelente clase. En la universidad personalmente solo me enseñaron a meterle patrones de diseño a todo, siempre tuve la sensación de que en proyectos chicos era una pérdida brutal de tiempo… y parace que así era

Muy inteeresante esta clase!!

Interesante como los pratrones de Diseño agregan complejidad a la solución

Muy interesante, no sabia sobre esto. 😃

"Cuando tienes un martillo, todo te parece un clavo"

  • Aplica para cualquier nueva cosa que aprendas y te vuele la cabeza. Acabando este curso quiero aplicar todo lo que aprendí :sw

nunca pares de aprender sobre patrones de diseño

Muy buenas referencias 🤠 Every Layout | Media Queries | Coding Horror

Mi conclusion sobre los patrones de diseño es que es mejor evitarlos e intentar solucionar el problema por nuestra cuenta de manera sencilla pero funcional. Y recurrir a ellos solo en casos extremos, en donde no basta con la solucion que nosotros mismos o el equipo implemente.

Advertencia: Los patrones de diseño pueden crear adicción

Una clase super clara, aporta demasiado!

Son soluciones generales ya probadas dentro de un contexto que las limita a problemas frecuentes que nos encontramos en el desarrollo de software.

patrones de diseños son muy buenas soluciones para problemas recurrentes.

Muy buen punto el que nombra al final

Patrón de diseño:

Solución genérica, para un problema
dentro de un contexto limitado y recurrente.

Every Layout, Media Queries

repasando este gran modulo

Aquí encontré una documentación bastante didáctica sobre Patrones de Diseño

Resumen de la clase:
Son recetas que resuelven problemas que nos encontramos frecuentemente en el desarrollo de software. Son una solución para un problema que ocurre en un contexto, contexto que ocurre varias veces.
Entonces un patrón es : “una solución para un problema dentro de un contexto”.
Contexto:

  • El contexto es la situación donde el patrón aplica.
  • Esta situación debe ser recurrente.
  • Ejemplo: muchos objetos están interesados en el estado de otro objeto.

Problema:

  • Se refiere a la meta que estas tratando de alcanzar dentro del contexto.
  • El problema incluye todas las limitaciones que existen dentro de este contexto.
  • Ejemplo: estos objetivos quieren recibir notificaciones cuando cambien el estado, sin tener que solicitar la información.
    Solución
  • Un diseño genérico que alcanza la meta dentro del contexto
  • Ejemplo: crear una clase donde cualquier objeto se puede suscribir y de suscribir a cambios en el estado ( el observer pattern)

Un poco de historia

  • La idea de los patrones comienza en la arquitectura con Christopher Alexander.
  • Sus libros describen patrones para construir arquitectura dinámica, como casas, puentes y pueblos.
  • El libro que comenzó el campo de patrones de diseño de software.
  • Publicado en 1995
  • Describe los patrones fundamentales.

Beneficios:

  • Los patrones de diseño son una caja de herramientas de soluciones bien probadas a problemas comunes en diseño de software.
  • Te proveen un lenguaje común que permite comunicarse de forma específica y eficiente.

Critica

  • Los patrones de diseño son una forma de complejidad.
  • Son soluciones a las limitaciones de un lenguaje de programación. Ejemplo: java o c# no tienen funciones de alto nivel
  • “cuando lo que tienes es un martillo, todo te parece un clavo”

Conclusión:

  • Siempre busca pensar en términos de diseño, no de patrones
  • Usa un patrón cuando hay una necesidad natural de usarlos.
  • Si existe una alternativa más simple, prefiérela.

Conclusión: No uses la martilladora pneumática 3000 de Makita si sólo necesitas colgar un cuadro.

Resumen…

Los patrones de diseño son una solución para un problema dentro de un contexto.

Contexto:
• El contexto es una situación donde el patrón aplica.
• Esta situación debe ser recurrente.
• Ejemplo: muchos objetos están interesados en el estado de otro objeto.

Problema:
• Se refiere a ala meta que estás tratando de alcanzar dentro del contexto
• El problema incluye todas las limitaciones que existen dentro de este contexto
• Ejemplo: Estos objetos quieren recibir notificaciones cuando cambie el estado, sin tener que solicitar la información.

Solución:
• Un diseño genérico que alcanza la meta dentro del contexto
• Ejemplo: Crear una clase donde cualquier objeto se pueda suscribir y desuscribir a cambios en el estado. (Patrón: Observer Pattern)

Beneficios de usar Patrones de diseño:
• Son una caja de herramientas de soluciones bien probadas a problemas comunes en el diseño de software.
• Te proveen un lenguaje común que permite comunicarse de forma específica y eficiente.

Crítica:
• Los patrones de diseño son una forma de complejidad
• Son soluciones a las limitaciones de un lenguaje de programación. Ejemplo: Java o C# no tienen funciones de alto nivel.
• “Cuando lo que tienes es un martillo, todo te parece un clavo.”

Conclusión:
• Siempre busca pensar en términos de diseño, no de patrones.
• Usa un patrón cuando hay una necesidadnatural para usarlos.
• Si existe una alternativa mñas simple, prefierela.

excelente clase es un tema algo complicado de entenderlo al principio

El concepto de patrón de diseño lleva existiendo desde finales de los 70, pero su verdadera popularización surgió en los 90 con el lanzamiento del libro de Design Pattern de la Banda de los Cuatro (Gang of Four), que aunque parezca que estamos hablando de los Trotamúsicos, es el nombre con el que se conoce a los creadores de este libro: Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides.

En él explican 23 patrones de diseño, que desde entonces han sido un referente.

Los patrones de diseno nos ayudan a resolver problemas recurrentes.

Se podria decir que los lenguajes humanos siguen un patron de diseño para poder comunicarnos entre nosotros con reglas similares aun en distintas leguas 😄

Es cierto cuando dice que los patrones de diseño llevan el código a un nivel de complejidad más alto, por lo cual es bueno recurrir a ellos sólo cuando sean imprescindibles.

Los patrones de dise;o resuelven un problema donde la situacion puede ser recurrente

Un patrón de diseño es una receta para problemas comunes en el desarrollo de software. Una solución para un problema dentro de un contexto que sucede muchas veces.

  • El contexto es la situación donde el patrón se aplica
  • Esta situación debe ser recurrente
  • Ejemplo: Muchos objetos están interesados en el estado de otro objeto

  • Se refiere a la meta que estás tratando de alcanzar dentro del contexto
  • El problema incluye todas las limitaciones que existen dentro de este contexto
  • Ejemplo: Estos objetos quieren recibir notificaciones cuando cambie el estado, sin tener que solicitar la información

  • Un diseño genérico que alcanza la meta dentro del contexto
  • Ejemplo: Crear una clase donde cualquier objeto se puede suscribir y desuscribir a cambios de estado. (Patrón Observer)
<h4>Historia</h4>

La idea de los patrones comienza en la arquitectura con Christopher Alexander.

Sus libros describen patrones para construir arquitectura dinámica, como casas, pueblos y ciudades.

Design Patterns (Libro)

El libro comenzó el campo de patrones de diseño de software. Fue publicado en 1995 y describe los patrones fundamentales. Fue escrito por la llamada Gang of Four. Su validez se mantiene hasta hoy en día.

<h4>Beneficios</h4>
  • Los patrones de diseño son una caja de herramientas de las soluciones bien probadas a problemas comunes en diseño de software.
  • Te proveen un lenguajes común que permite comunicarse de forma específica y eficiente.
<h4>Críticas</h4>
  • Los patrones de diseño son una forma de complejidad
  • Son soluciones a las limitaciones de un lenguaje de programación. Ejemplo: Java o C# no tienen funciones de alto nivel.
  • “Cuando lo que tienes es un martillo todo te parece un clavo”. Evitar querer utilizarlos para resolver cualquier problema

Patterns, like all forms of complexity, should be avoided until they are absolutely necessary

<h4>Conclusion</h4>
  • Siempre busca pensar en términos de diseño, no de patrones.
  • Usa un patrón cuando hay una necesidad natural para usarlos.
  • Si existe una alternativa más simple, úsala.

Muy bien explicado