Soy un programador novato y aficionado confundido que intenta controlar esto, así que perdóname si mi pregunta es un poco errónea o no tiene mucho sentido.
Veo muchas preguntas sobre SO que giran en torno al uso de patrones de diseño, y me pregunto si alguien tiene buenos recursos para aprender e implementar patrones de diseño. Entiendo la idea general y sé cómo / cuándo usar un par de ellos (métodos Singleton, Factory) pero sé que me lo estoy perdiendo.
(En caso de que importe, mi idioma de preferencia es C # pero podría aprender de ejemplos en otros idiomas)
fuente
Los patrones de diseño son excelentes por varias razones:
Pero cuando tu objetivo es solo aprender patrones de diseño, creo que te estás perdiendo los fundamentos. Todos los patrones de diseño se basan en principios más comunes. Principio abierto cerrado de alta cohesión, acoplamiento bajo, DRY, principio de sustitución de Liskov, etc. Para estos fundamentos, leería los siguientes libros en este orden:
Después de eso, estará listo para el grupo básico de cuatro patrones de diseño.
El siguiente paso:
Y recuerda siempre: ¡el patrón no es el objetivo!
fuente
Yo añadiría que el libro Design Patterns de la "Gang of four" es una biblia para cualquiera que esté seriamente interesado en los patrones de diseño.
fuente
Mi consejo:
Lea mucho sobre los patrones de diferentes fuentes.
Intentar forzar tantos patrones como sea posible en todo el código que está escribiendo, ya que este punto, no dará buenos resultados. En cambio, deje que la información descanse dentro de su cerebro por un tiempo (lea: meses).
De repente, se encontrará tropezando con un problema o fragmento de código y recordará vagamente que ha visto algo que podría funcionar como una solución a este problema en particular. Ahora es el momento de buscar los detalles del patrón en el que estás pensando e intentar aplicarlo.
Eso es lo que me ha funcionado, de todos modos.
fuente
Patrones de diseño
Este sitio de tutoriales contiene las siguientes subsecciones
Este sitio también contiene una guía sobre Anti Patrones , UML y Refactorización .
fuente
Bruce Eckel tiene un libro sobre patrones de diseño , aunque es Java, es como todos sus libros asombrosos. ¡Y lo mejor es que son gratis!
fuente
Patrones de diseño de C # 3.0 para una perspectiva de C # sobre patrones de diseño.
(fuente: oreilly.com )
fuente
Un libro introductorio que encontré útil y bien escrito es Design Patterns Explained por Alan Shalloway y James Trott (Addison Wesley).
No , no empezar desde la banda de los cuatro libros, ya que no es un libro de introducción por cualquier medio.
fuente
Recomendaría echar un vistazo a la quintología (?) De Jean Paul Boodhoo sobre Desmitificación de patrones de diseño en DNRtv, URL que se proporcionan a continuación. Las transmisiones de video tocan a Singleton, Abstract Factory, entre otros, con la diferencia de que puedes verlo codificar mientras discute la teoría. Es bueno vigilar el almuerzo en un día lluvioso de la semana.
http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum= 68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92
fuente
Una anotación a los comentarios anteriores.
Una referencia rápida para patrones GOF
Este es un buen lugar donde puede comenzar dofactory.com/patterns/patterns.aspx : puede encontrar un enlace a cada patrón, junto con las implementaciones correspondientes.
Sin embargo, recuerde que estos son patrones GOF. Es posible que también deba leer y comprender patrones avanzados, una vez que obtenga suficiente experiencia en OOAD. Head First Design Patterns es un buen comienzo y, después de hacer algunos progresos, opte por los patrones de arquitectura de aplicaciones empresariales de Martin Fowler.
Aplicación de patrones de diseño: el proceso de pensamiento
Otro aspecto principal: aplicar patrones de diseño es tan importante como simplemente conocerlos. La lectura de estos artículos también puede ayudarlo.
Aplicación de patrones de diseño, parte I
Aplicación de patrones de diseño, parte II
Espero que esto ayude
fuente
Head First Design Patterns es bueno, como otros ya se han mencionado. Además de esto, por supuesto, el libro original y C # Design Patterns. También hay buenos sitios web ya mencionados.
Además del autoaprendizaje, recomiendo seriamente comenzar o asistir a un grupo de estudio de patrones en su área. Consulte Una guía de aprendizaje para diseñar patrones para obtener una explicación y un gran orden para estudiar los patrones. Hicimos esto y puedo decir honestamente que no entendería tanto como ahora. Una reunión semanal con otras personas interesadas lo mantiene sorprendentemente disciplinado cuando aprende algo abstracto como patrones de diseño.
¡Felices estudios!
fuente
Antes de gastar dinero en libros, recomendaría la excelente página de patrones de diseño de Wikipedia . También para algo diferente, Google para "screencasts de patrones de diseño" o busque "patrones de diseño" en YouTube . Obtener la misma información presentada de manera diferente a menudo ayuda a bajar el centavo.
El libro Gang of Four es el texto definitivo sobre los patrones más conocidos, pero no es tan fácil de leer y, con ejemplos de C ++, no es el favorito de todos.
El texto Head First Design Patterns es mucho más accesible, pero solo contiene un subconjunto de los patrones Gang of Four.
Lo más importante es comprender dónde y por qué es útil un patrón en particular. Luego, busque en la web ejemplos de implementación en el idioma de su elección y experimente hasta que "lo obtenga". Comprenda un patrón antes de pasar al siguiente. Todos comprenden algunos patrones mejor que otros (y hay cientos de patrones menos conocidos).
Sigue conectándote.
fuente
(fuente: Amazon )
fuente
Patrones de arquitectura de aplicaciones empresariales (tapa dura) por Martin Fowler
Refactorización de patrones (tapa dura) por Joshua Kerievsky
Integración continua: mejora de la calidad del software y reducción del riesgo (rústica) por Paul Duval et.al.
Más allá de la arquitectura de software: creación y mantenimiento de soluciones ganadoras (rústica) por Luke Hohmann
fuente
Los patrones de diseño son como cualquier función de biblioteca, lea sobre ellos, luego, cuando surja un problema, el patrón de diseño estará en su "Caja de herramientas". Hay muchos libros de patrones de diseño, todos con el patrón de los patrones de diseño originales de "Gang of four".
Para cualquier programador, creo que eso y el libro Refactoring de Fowler son los requisitos mínimos absolutos.
fuente
Para sitios web, un sitio muy bueno es http://ajaxpatterns.org , de uno de los desarrolladores del sitio web ajaxian.
fuente
El libro de Patrones de Diseño original es una lectura obligada para todos los programadores.
Es un libro excelente en todos los niveles: diseño, claridad, perspicacia, profundidad. Es uno de esos grandes libros que primero lees de principio a fin y luego lo usas como referencia hasta que literalmente lo conoces de adentro hacia afuera.
Puede comenzar por la página de Wikipedia , pero también disfrute del gran libro.
fuente
Aplicación de UML y patrones por Craig Larman. Comience desde lo básico de análisis, diseño y utilice un escenario de caso simple. Presenta la mayoría de los patrones básicos de forma sencilla.
fuente
Si lee sobre patrones de diseño, notará que Java parece tener algunos de ellos implementados.
Mire la fuente de cualquier marco y podrá obtener información sobre patrones de diseño. Personalmente, no veo que encajen perfectamente en ninguno de mis códigos, a veces los ejemplos en libros y tutoriales parecen un poco idealizados, especialmente para el codificador solitario.
Los patrones de diseño no son para codificadores perezosos.
fuente
Para mí y mis colegas, estudiamos Design Pattern siguiendo el Pattern Study Group . Preparan una lista de cada patrón que debemos aprender en orden y también tienen las preguntas de apertura que hacen más discusión en grupo.
fuente
También sugiero tener un shufty en la refactorización de patrones una vez que haya leído Head First Design Patterns.
Nota: Los ejemplos de código están en Java, pero deberían ser muy similares a los ejemplos de C # ...
fuente
Para mí no tiene mucho sentido que alguien con muy poca experiencia profundice demasiado en los patrones de diseño. Es genial saber que existen, pero en este punto debes centrarte más en otras cosas en lugar de solo aprender sobre patrones de diseño.
Son útiles en el contexto de un problema: como concepto para un desarrollador nuevo / principiante, en realidad no tienen demasiado valor práctico, aparte de saber que debe utilizarlos cuando y donde pueda.
EDITAR Para aclarar, muchos patrones de diseño son el resultado de problemas encontrados en algunos dominios. Difícilmente se puede esperar que un nuevo programador (OMI) conozca el patrón o patrones de diseño que debe usar para algunos problemas. Así como obtenemos un puñado de algoritmos en los estudios de CS, necesitamos comprender las cosas que podemos hacer con los patrones y sus beneficios, pero cuando una persona todavía está construyendo hola mundo o descubriendo stl, no hay mucha necesidad práctica de patrones de diseño. Los patrones son geniales. Pero no son la solución milagrosa.
(Ni CASE (herramientas), ni es / fue UML, ni SCRUM, ni TDD, ni STL, ni Java, ni XML, etc.) Estos son solo aspectos de nuestra profesión y tratar estos temas como el segundo venir es ingenuo.
fuente
Los patrones comprenden el vocabulario de alto nivel que usan los programadores para hablar sobre diseño abstracto. Si está reutilizando una solución abstracta, es útil referirse a ella por su nombre. Si inventa un patrón, es profesional verificar un poco para asegurarse de que no se le haya dado un nombre. Si ha sido nombrado, entonces la descripción puede ser útil.
Después de codificar aunque sea un poquito, notará que escribe algo similar a lo que codificó antes. Este es un patrón. Incluso si es un patrón pequeño, vale la pena notarlo. ¿Existe un patrón mejor? ¿Ve ciertos patrones diminutos cooperando juntos para resolver un problema mayor? Bueno, la próxima vez, cuando desee resolver un problema mayor, todo el patrón vendrá a su mente como un solo fragmento. Desarrollar las líneas detalladas de código se vuelve mecánico.
Cuanto más observe los patrones, más fácil se volverá la programación y más apreciará algunos de los mejores y más grandes patrones elaborados por otros programadores. Intente dominar el patrón MVC. De una forma u otra, las variaciones aparecen por todas partes, incluso en pequeñas decisiones de diseño.
fuente
Una vez que comprenda el concepto, revise el código fuente o el diseño de Eclipse, muchos ejemplos realmente buenos de estos patrones (no es de extrañar, Gamma fue uno de los diseñadores).
fuente
He encontrado artículos de Design Pattern en este sitio web realmente fáciles de entender
Patrones de diseño en C #
fuente