Pregunta

¿Cuál es la penetración de los patrones de diseño en el mundo real?¿Los utiliza en su trabajo diario (discute cómo y dónde aplicarlos con sus compañeros de trabajo) o siguen siendo más bien un concepto académico?

¿Realmente aportan valor real a su trabajo?¿O son simplemente algo de lo que la gente habla para parecer inteligente?

Nota:A los efectos de esta pregunta, ignore los patrones de diseño "simples" como único.Estoy hablando de diseñar tu código para que puedas aprovechar Controlador de vista de modelo, etc.

¿Fue útil?

Solución

Cualquier programa grande que esté bien escrito utilizará patrones de diseño, incluso si no se nombran ni se reconocen como tales.Eso es lo que son los patrones de diseño, diseños que repetida y naturalmente ocurrir.Si está interactuando con una API fea, probablemente se encontrará implementando una Facade para limpiarlo.Si tiene mensajes entre componentes que necesita desacoplar, es posible que se encuentre usando Observer.Si tiene varios algoritmos intercambiables, podría terminar usando Strategy.

Vale la pena conocer los patrones de diseño porque es más probable que los reconozcas y luego converjas en una solución limpia más rápidamente.Sin embargo, incluso si no los conoces en absoluto, eventualmente terminarás creándolos (si eres un programador decente).

Y, por supuesto, si estás usando un lenguaje moderno, probablemente te verás obligado a usarlos para algunas cosas, porque están integrados en las bibliotecas estándar.

Otros consejos

En mi opinión, la pregunta:"Tú usar ¿patrón de diseño?", por sí solo es un poco defectuoso porque la respuesta es universalmente SÍ.

Déjame explicarte, nosotros, programadores y diseñadores, todos usamos patrones de diseño...simplemente no siempre nos damos cuenta.Sé que esto suena a cliché, pero no acudes a los patrones, los patrones vienen a ti.Diseñas cosas, pueden parecer un patrón existente, lo nombras de esa manera para que todos entiendan de qué estás hablando y la lógica detrás de tu decisión de diseño sea más sólida, sabiendo que se ha discutido. hasta la náusea antes.

Personalmente uso patrones como herramienta de comunicación.Eso es todo.No son soluciones de diseño, no son mejores prácticas, no son herramientas en una caja de herramientas.

No me malinterpretes, si eres principiante, los libros sobre patrones te mostrarán cómo se resuelve mejor una solución "usando" sus patrones en lugar de otro diseño defectuoso.Probablemente aprenderá del ejercicio.Sin embargo, debes darte cuenta de que esto no significa que cada situación necesite un patrón correspondiente para resolverla.Cada situación tiene una peculiaridad aquí y allá que requerirá que pienses en alternativas y tomes una decisión difícil sin una respuesta perfecta. Eso es diseño.

Sin embargo, los antipatrones pertenecen a una clase totalmente diferente.tu en realidad desear a activamente Evite los antipatrones.Por eso el nombre antipatrón es tan controvertido.

Para volver a su pregunta original:
“¿Utilizo patrones de diseño?”, ¡Sí!
"¿Me inclino activamente por los patrones de diseño?", No.

Sí.Los patrones de diseño pueden ser maravillosos cuando se usan apropiadamente.Como mencionaste, ahora estoy usando Model-View-Controller (MVC) para todos mis proyectos web.Es un patrón muy común en el espacio web que hace que el código del lado del servidor sea mucho más limpio y bien organizado.

Más allá de eso, aquí hay algunos otros patrones que pueden resultar útiles:

  • MVVM (Modelo-Ver-VerModelo):un patrón similar al MVC;utilizado para aplicaciones WPF y Silverlight.

  • Composición:Ideal para cuando necesitas usar una jerarquía de objetos.

  • Único:Más elegante que usar globales para almacenar elementos que realmente necesitan una sola instancia.Como mencionaste, un patrón simple pero que tiene sus usos.

Vale la pena señalar que un patrón de diseño también puede resaltar una falta de características lingüísticas y/o deficiencias en un idioma.Por ejemplo, los iteradores ahora están integrados como parte de lenguajes más nuevos.

En general, los patrones de diseño son bastante útiles pero no debes usarlos en todas partes;justo donde se adaptan bien a sus necesidades.

Lo intento, sí.De hecho, ayudan al mantenimiento y la legibilidad de su código.Sin embargo, hay personas que abusan de ellos, generalmente (por lo que he visto) forzando un sistema a seguir un patrón que no existe.

Intento usar patrones si son aplicables.Creo que es un poco triste ver a los desarrolladores implementar patrones de diseño en el código porque sí.Sin embargo, para la tarea correcta, los patrones de diseño pueden resultar muy útiles y poderosos.

Hay muchos patrones de diseño más allá de lo simple que se utilizan en el "mundo real".Un buen ejemplo de Stackoverflow utiliza el patrón Modelo Vista Controlador.He usado Class Factories varias veces en proyectos para mi empleador y también he visto muchos proyectos ya escritos usándolos.

No digo que se estén utilizando todos los patrones de diseño, pero sí muchos.

Sí, suele ocurrir cuando empezamos a diseñar algo y luego alguien nota que se parece a un patrón existente.Luego le echamos un vistazo y vemos cómo nos ayudaría a lograr nuestro objetivo.

También utilizamos patrones que no están documentados pero que surgen mucho del diseño.

Eso sí, no los usamos mucho.

Sí, Factory, Chain of Responsibility, Command, Proxy, Visitor y Observer, entre otros, se utilizan en una base de código con la que trabajo a diario.En lo que respecta a MVC, este sitio parece usarlo bastante bien y los desarrolladores no pudieron decir lo suficiente sobre el tema. último podcast.

Sí, uso muchos patrones de diseño conocidos, pero también termino creando algún software que luego descubro que utiliza un patrón de diseño "nombrado".Los diseños más elegantes y reutilizables podrían denominarse "patrón".Se parece mucho a los movimientos de baile.Todos conocemos el vals y los 2 pasos, pero no todos tienen un nombre para el "bump and scoot", aunque la mayoría de nosotros lo hacemos.

MVC es muy conocido, por lo que sí utilizamos bastante patrones de diseño.Ahora, si preguntas sobre los patrones de la Banda de los Cuatro, hay varios que uso porque otros mantenedores conocerán el diseño y en qué estamos trabajando en el código.Sin embargo, hay varios que siguen siendo bastante oscuros para lo que hacemos, por lo que si uso uno no obtengo todos los beneficios de usar un patrón.

¿Son importantes? Sí, porque le brinda un método para hablar sobre diseño de software de una manera rápida, eficiente y generalmente aceptada.¿Puedes crear mejores soluciones personalizadas, bueno, sí (más o menos)?

Los patrones GoF originales se extrajeron del código de producción, por lo que catalogaron lo que ya se estaba utilizando en la naturaleza.No son puramente ni principalmente una cuestión académica.

Encuentro que el patrón MVC es realmente útil para aislar la lógica de su modelo, que luego puede reutilizarse o trabajarse sin demasiados problemas.También ayuda a desacoplar sus clases y facilita las pruebas unitarias.escribí sobre eso recientemente (sí, enchufe descarado aquí...)

Además, recientemente utilicé un patrón de fábrica de una clase base para generar y devolver la clase DataContext adecuada que necesitaba sobre la marcha, usando LINQ.

Los puentes se utilizan cuando se intenta unir dos tecnologías diferentes (como Cacao y Rubí en Mac, por ejemplo)

Sin embargo, encuentro que cada vez que implemento un patrón es porque lo sabía de antemano.Por lo general, se piensa un poco más en ello, ya que encuentro que debo modificar ligeramente el patrón original para adaptarlo a mis necesidades.

Solo debes tener cuidado de no convertirte y astronauta de arquitectura!

Sí, los patrones de diseño se utilizan ampliamente en el mundo real y a diario por muchas de las personas con las que trabajo.

En mi opinión, el mayor valor que ofrecen los patrones de diseño es que proporcionan un lenguaje universal de alto nivel para transmitir el diseño de software a otros programadores.

Por ejemplo, en lugar de describir su nueva clase como una "utilidad que crea una entre varias otras clases basándose en alguna combinación de criterios de entrada", puede simplemente decir que es una "fábrica abstracta" y todos entienden instantáneamente de qué estás hablando.

Sí, los patrones de diseño o patrones abstractos son parte de mi vida, donde miro, empiezo a verlos.Por eso estoy rodeado de ellos.Pero, como usted sabe, el poco conocimiento es algo peligroso.Por lo tanto, le recomiendo encarecidamente que lea el libro GoF.

Uno de los principales problemas de los patrones de diseño es que la mayoría de los desarrolladores simplemente no entienden la idea o no creen en ellos.Y la mayoría de las veces discuten sobre las variables, bucles o interruptores.Pero creo firmemente que si no habla el lenguaje de patrones, su software no llegará muy lejos y se encontrará en una pesadilla de mantenimiento.

Como sabes, el antipatrón también es algo peligroso y ocurre cuando tienes poca experiencia en patrones de diseño.Y refactorizar antipatrones es mucho más difícil.Como libro recomendado sobre este problema, lea "AntiPatterns:Refactorización de software, arquitecturas y proyectos en crisis".

Sí.

Incluso los estamos usando en mi trabajo actual:Codificación de mainframe con COBOL y PL/I.

Hasta ahora he visto Adaptor, Visitor, Facade, Module, Observer y algo muy parecido a Composite e Iterator.Debido a la naturaleza de los lenguajes, se utilizan principalmente patrones estructurales.Además, no siempre estoy seguro de que las personas que los usan lo hagan conscientemente :D

Utilizo absolutamente patrones de diseño.En este punto doy por sentado MVC como patrón de diseño.Mi razón principal para usarlos es que soy lo suficientemente humilde como para saber que probablemente no soy la primera persona que se encuentra con un problema en particular.Rara vez comienzo un fragmento de código sabiendo qué patrón voy a utilizar;Observo constantemente el código para ver si se convierte naturalmente en un patrón existente.

A mi también le tengo mucho cariño Martín Fowler Patrones de arquitectura de aplicaciones empresariales.Cuando se presenta un problema o tarea, paso a la sección relacionada (es principalmente un libro de referencia) y leo algunas descripciones generales de los patrones.Una vez que tengo una mejor idea del problema general y las soluciones existentes, empiezo a ver el camino a largo plazo que probablemente tomará mi código a través de la experiencia de otros.Termino tomando decisiones mucho mejores.

Los patrones de diseño definitivamente juegan un papel importante en todas mis ideas "para el futuro".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top