¿Qué patrón de diseño crees que es el más popular?
¿Qué patrón de diseño crees que es el más popular?
Respuestas:
Estoy bastante seguro de que lo más común es 'La gran bola de barro'. Lamentablemente para todos nosotros.
http://en.wikipedia.org/wiki/Big_ball_of_mud
MVC y sus variaciones es definitivamente uno de los mejores patrones de diseño.
Si estás hablando de patrones de diseño Gang-of-Four , tendría que decir Singleton . Este es un estado de cosas realmente triste, casi como si los programadores escucharan sobre la magia de los patrones de diseño y luego simplemente se detuvieran después del primero.
Si estás hablando de patrones de estilo arquitectónico (en otras palabras, patrones de diseño que abarcan múltiples clases o capas), tendría que decir MVC . Algunos otros populares son el patrón de repositorio y el localizador de servicios .
Observador
Si alguna vez has usado un evento. Has usado Observer.
Decorador
Agregue funcionalidad a un objeto en tiempo de ejecución a través de la composición. Mi favorito personal
Editar: También Factory es probablemente uno de los más comunes.
Fachada
Piense en cualquier interfaz REST como Twitter o las API SO. Está ocultando un montón de cosas de back-end que, al menos en el caso de los twitters, pueden ser terriblemente complejas.
¿Me importa en qué tweets de db tables @ apklusk están almacenados? ¿Y que tiene un caché rápido? ¿Y que @shemnon tiene tan pocos lectores que los tweets siempre están fuera de memoria? Esa es la magia de la fachada.
Patrón de estrategia
Si alguna vez ha usado la inyección de dependencia, ha usado el patrón de estrategia.
¿Por qué nadie ha mencionado aún el iterador ? Especialmente con todos los mapas que componen estructuras de datos complejas ... es la que más uso. ¿O estamos hablando de patrones que volvemos a implementar?
Junto con mi respuesta anterior, voy a agregar una nueva que encontré hoy de mi bestia de un proyecto heredado:
Copiar pegar
Mientras depuraba me encontré con un código que llamaba a 2 funciones con nombres similares:
if(x)
Func1
else
Func2
Func1 y Func2 tenían los mismos parámetros. Los saqué y difundí, y son 100% iguales, excepto para las llamadas Func1 Func3 y Func2 llamadas Func4. Los saqué y los distinguí. 100% igual, excepto por 1 línea. Por lo tanto, un programador anterior decidió copiar y pegar dos funciones anidadas de 50 líneas, en lugar de agregar un parámetro de indicador, a 2 funciones privadas utilizadas en exactamente 1 lugar. Eso me hace querer llorar.
Hablando de patrones de diseño Gang-of-Four, no puedo pensar en un programa que no use el patrón Observer. Además, como mencionó Jaco, Singleton también se usa mucho, desafortunadamente se ha convertido en un martillo (cualquier programador lo usa incluso si no es completamente necesario).
$_SESSIONvariable PHP .
Interprete
Raramente implementado, de uso frecuente. Selectores XPATH, XSLT, Regex, jQuery, etc.
Me sorprende que nadie haya dicho "Constructor" todavía. O "Adaptador". Probablemente no sean tan exóticos como algunos de los otros mencionados, pero los uso todo el tiempo. Factory y Abstract Factory también son muy comunes (pero ya están tomadas).
No creo que esté listado en el GoF, pero uso variaciones de él todo el tiempo.
A nivel de diseño de software, diría que Compuesto, Estrategia y Plantilla (y, en menor medida, Fábrica) son los más utilizados. Durante la última década más o menos, hemos visto una preferencia por la composición sobre la herencia al construir nuestros sistemas utilizando un diseño OO. Como resultado, la combinación de los patrones recién mencionados juega un papel mucho más importante que todos los demás IMO.
Arquitectónicamente, abogaría por MVC en la empresa, y patrones basados en máquinas de estado en el lado incrustado de las cosas.