¿Hay un libro canónico sobre patrones de diseño? [cerrado]

43

Estoy interesado en aprender patrones de diseño y me gustaría saber qué se consideran libros de primer nivel al aprender este tema.

¿Hay algún libro ahí fuera que sea el estándar de facto para describir las mejores prácticas, las metodologías de diseño y otra información útil sobre los patrones de diseño? ¿Qué pasa con ese libro que lo hace especial?

    
pregunta mW00t 08.12.2011 - 23:50

11 respuestas

55

Patrones de diseño: elementos de software orientado a objetos reutilizables se acerca mucho a mi definición de libro canónico sobre patrones de diseño. De acuerdo con su artículo de wikipedia (el énfasis es mío):

  

La fecha de publicación original del libro era el 21 de octubre de 1994 con un copyright de 1995, y en julio de 2010, el libro estaba en su 38ª impresión . El libro se puso a disposición del público por primera vez en la reunión de OOPSLA celebrada en Portland, Oregón, en octubre de 1994. Ha sido muy influyente en el campo de la ingeniería de software y se considera una fuente importante de teoría y práctica del diseño orientado a objetos. Más de 500,000 copias se han vendido en inglés y en otros 13 idiomas .

Ward Cunningham , un pionero en los patrones de diseño, mantiene un catálogo en línea de los patrones del libro en WikiWikiWeb . Y de acuerdo con el artículo de Wikipedia en patrón de diseño (de nuevo, énfasis mío):

  

Los patrones de diseño ganaron popularidad en ciencias de la computación después de que el libro Design Patterns: Elements of Reutilizable Object-Oriented Software se publicara en 1994 por el llamado "Gang of Four" (Gamma et al.) .

Hay algunos otros libros a los que se hace referencia en mismo artículo como notables en el género :

  

De los que he leído el libro de Fowler, es muy influyente y una buena lectura. En ciertos puntos es un poco vago para mi gusto, pero en general es un libro agradable. Hay un catálogo en línea de los patrones incluidos en el libro, con descripciones mínimas.

También he hojeado los patrones de diseño de Head First, y si has leído algún otro libro de la serie Head First, es de la misma alta calidad y tan agradable como la mayoría de los libros de la serie :

  

Head First es una serie de libros instructivos introductorios sobre muchos temas, publicados por O'Reilly Media. Hace hincapié en una combinación poco ortodoxa, visualmente intensiva, que involucra al lector, de rompecabezas, chistes, diseño y diseño no estándar y un estilo atractivo y conversacional para sumergir al lector en un tema determinado.

El término "patrón de diseño" es algo vago, ya que cada solución general reutilizable puede considerarse un patrón de diseño. Siempre he notado una tendencia a aplicar la etiqueta en las soluciones descritas en uno de los libros notables que he enumerado anteriormente, y más específicamente en los libros de Gang of Four y Fowler. Los patrones de diseño no siguen un proceso de desarrollo único, son soluciones de software normales que resultan ser enormemente reutilizables y son extremadamente difícil de identificar .

Pero si compara los catálogos en línea de ambos libros con el contenido de libros específicos para cada idioma, notará que a menudo se usan como plantillas. Así que diría que ambos libros están muy cerca de ser referencias canónicas, siendo el libro GoF el más importante desde una perspectiva histórica, aunque ambos libros están limitados a programación orientada a objetos .

    
respondido por el yannis 09.12.2011 - 00:06
27

El libro Gang of Four - Patrones de diseño: elementos de software reutilizable orientado a objetos es probablemente lo más cercano Tenemos un estándar de la industria en patrones de diseño.

Para una introducción más accesible, Head First: Design Patterns también es bueno. No se desanime por la portada 'trendy', ya que es una buena lectura y probablemente le ayudará a comprender los conceptos del libro de GoF mucho más fácil si lo lee primero.

    
respondido por el richeym 13.09.2010 - 11:51
22

  

En cualquier momento dado, en algún lugar del mundo alguien lucha con los mismos problemas de diseño de software que tiene usted. Sabes que no quieres reinventar la rueda (o, lo que es peor, una llanta desinflada), así que te fijas en los Patrones de diseño, las lecciones aprendidas por aquellos que han enfrentado los mismos problemas. Con los patrones de diseño, puedes aprovechar las mejores prácticas y la experiencia de los demás, para que puedas dedicar tu tiempo a ... otra cosa. Algo más desafiante. Algo más complejo. Algo más divertido.

     

Quiere aprender sobre los patrones que importan: por qué usarlos, cuándo usarlos, cómo usarlos (y cuándo NO usarlos). Pero no solo quiere ver cómo se ven los patrones en un libro, sino también cómo se ven "en la naturaleza". En su ambiente nativo. En otras palabras, en aplicaciones del mundo real. También desea aprender cómo se utilizan los patrones en la API de Java y cómo aprovechar el soporte de patrones integrado de Java en su propio código.

     

Quieres aprender los principios de diseño de OO reales y por qué todo lo que tu jefe te contó sobre la herencia podría estar equivocado (y qué hacer en su lugar). Quieres aprender cómo te ayudarán esos principios la próxima vez que estés en un arroyo sin un patrón de diseño.

     

Lo más importante es que quieres aprender el "lenguaje secreto" de los patrones de diseño para que puedas mantener el tuyo con tu compañero de trabajo (e impresionar a los invitados a la fiesta de cócteles) cuando él menciona casualmente su uso increíblemente inteligente de Command, Facade, Proxy, y Factory entre sorbos de un martini. Contrarrestará fácilmente con su profunda comprensión de por qué Singleton no es tan simple como parece, cómo la Fábrica se entiende mal a menudo o sobre la relación real entre Decorador, Fachada y Adaptador.

     

Con Head First Design Patterns , evitará la vergüenza de pensar que Decorator es algo del programa "Trading Spaces" ...

    
respondido por el Gordon 13.09.2010 - 11:49
10

Sí, hay un libro bien conocido sobre patrones de diseño: Patrones de diseño: elementos de software orientado a objetos reutilizables y a los autores a menudo se les llama "la Banda de los Cuatro" (GoF) y se menciona en casi todos los textos sobre patrones de diseño.

    
respondido por el Jonas 08.12.2011 - 23:53
9

Patrones de diseño: elementos de software orientado a objetos reutilizables

De wikipedia :

  

Patrones de diseño: elementos de software orientado a objetos reutilizables es una   libro de ingeniería de software que describe soluciones recurrentes a comunes   Problemas en el diseño de software. Los autores del libro son Erich Gamma,   Richard Helm, Ralph Johnson y John Vlissides con un prólogo de   Grady Booch. Los autores son a menudo referidos como la Banda de los Cuatro,   GoF, o Go4. El libro está dividido en dos partes, con las dos primeras.   Capítulos que exploran las capacidades y las dificultades de los objetos.   programación, y los capítulos restantes que describen 23 software clásico   patrones de diseño. El libro incluye ejemplos en C ++ y Smalltalk.

    
respondido por el Piers Myers 25.09.2010 - 23:23
3

Uno de los mejores sitios web de patrones de diseño es la Wiki de Ward, la primera wiki. Consulte enlace para ver una buena página de inicio.

  

En 1987, Ward y Kent estaban consultando con el Grupo de Sistemas de Pruebas de Semiconductores de Tektronix que tenía problemas para terminar un diseño. Decidieron probar los patrones que habían estado estudiando. Al igual que Alexander, quien dijo que los ocupantes de un edificio deberían diseñarlo, Ward y Kent permiten que los representantes de los usuarios (un entrenador y un ingeniero de campo) terminen el diseño.

     

Ward creó un "lenguaje" de cinco patrones que ayudó a los diseñadores novatos a aprovechar las fortalezas de Smalltalk y evitar sus debilidades ...

     

Ward y Kent se sorprendieron de la elegancia (ciertamente espartana) de la interfaz que diseñaron sus usuarios. Ellos reportaron los resultados de este experimento en OOPSLA 87 en Orlando. Escribieron una posición en el panel y la presentaron en el taller de Norm Kerth en ¿De dónde provienen los objetos? Hablaron de patrones hasta que se pusieron de color azul y obtuvieron mucha concordancia, pero sin patrones más concretos. nadie se estaba registrando.

     

Mientras tanto, Erich Gamma estaba ocupado escribiendo y reflexionando sobre el diseño orientado a objetos en ET ++ como parte de su tesis doctoral. Erich se había dado cuenta de que las estructuras o patrones de diseño recurrentes eran importantes. La pregunta realmente era cómo capturarlos y comunicarlos.

     

Bruce Anderson dio una charla en TOOLS 90 en la que ErichGamma estaba presente; A Erich le gustó la charla. Bruce dio un artículo en EcoopOopsla90 (Ottawa) y dirigió un BOF llamado Toward an Architecture Handbook , donde él, Erich Gamma, Richard Helm y otros participaron en discusiones sobre patrones. Esa fue la primera vez que Richard y Erich se conocieron, y se dieron cuenta de que compartían ideas comunes sobre las ideas clave detrás de la escritura de software reutilizable OO.

     

Justo antes de ECOOP'91, Erich Gamma y Richard Helm, sentados en un tejado en Zurich en un sofocante día de verano, reunieron los humildes comienzos del catálogo de patrones que eventualmente se convertirían en DesignPatterns ...

     

Las cosas realmente se pusieron en marcha en el taller de OOPSLA que Bruce realizó en 1991. Casualmente, Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides estaban allí; luego se convertirían en el Gang of Four que creó el libro Design Patterns ...

    
respondido por el Gaurav 13.09.2010 - 11:31
2

Creo que la Refactoring to Patterns puede ser útil simplemente porque describe cómo se puede refactorar ciertos diseños / códigos Hacia los patrones en el libro de GoF. Esto puede ayudar a superar la curva de aprendizaje inicial. Ah, y también contempla en 'Patrón-felicidad' :)

También puede encontrar una buena lectura de los tres primeros volúmenes de Arquitectura de software orientada a patrones.

    
respondido por el finrod 23.12.2010 - 22:52
1

Patrones de diseño

Este sitio tutorial contiene las siguientes subsecciones

  • Intención de cada patrón de diseño
  • Estructura del mundo real para el patrón de diseño
  • Una declaración de problema
  • Discusión detallada sobre el problema
  • Lista de verificación sobre cómo llegar a un patrón
  • Reglas de oro al llegar al patrón.
  • Fragmentos de código para el patrón de diseño que incluye C #, C ++, Delphi, Java y PHP

Este sitio también contiene una guía sobre Anti Patterns, UML y Refactoring.

    
respondido por el pramodc84 02.10.2010 - 18:40
1

"Principios, patrones y prácticas ágiles en C #" por Robert C. Martin. Creo que él también tiene una versión de Java del libro.

Además, no es un patrón en sí mismo, pero el Diseño impulsado por dominios tiene algunos conceptos geniales, incluso si no opta por el enfoque DDD completo.

  * Ubiquitous Language
  * Code first approach (vs. DB first)
  * etc.
    
respondido por el Kevin Nelson 21.10.2010 - 22:41
1

Si está interesado específicamente en los patrones de diseño en C ++, intente Modern C ++ Design por Andrei Alexandrescu.

Este libro habla sobre cómo implementar patrones de uso común como Factory, Singleton y Visitor en C ++. También trata temas muy específicos de C ++, como los punteros inteligentes, la metaprogramación de plantillas y el diseño de clases basado en políticas.

El autor del libro es un experto autorizado , conocido por su

  

trabajo pionero en el diseño basado en políticas implementado a través de la metaprogramación de plantillas. Estas ideas se articulan en su libro Modern C ++ Design y se implementaron por primera vez en su biblioteca de programación, Loki. También implementó el concepto "mover constructores" en su biblioteca MOJO. Contribuyó a la revista C / C ++ Users con el nombre "Genérico < Programación >" ...

    
respondido por el Dima 15.10.2010 - 22:21
0

El libro original, "Patrones de diseño: elementos de software orientado a objetos reutilizables" es un buen recurso para patrones de diseño orientados a objetos.

Existen muchos otros libros por ahí. Cuando necesito una referencia rápida y mi libro GoF está fuera de alcance, Wikipedia normalmente tiene suficiente información sobre esos y otros patrones de diseño.

Esos son los principales que uso. También se debe tener en cuenta que las personas han comenzado a aplicar el formato de patrón a otras cosas, como la gestión de proyectos.

Si desea saber acerca de antipatterns, que debe tener en cuenta, hay dos libros, "AntiPatterns: software de refactorización, arquitecturas y proyectos en crisis", así como "Refactoring: mejorando el diseño del código existente", que tiene una sección sobre olores de códigos, otro nombre para antipatterns.

    
respondido por el indyK1ng 15.10.2010 - 22:53

Lea otras preguntas en las etiquetas

Comentarios Recientes

Er .. sí, ¡mucha gente! Hemos estado leyendo todo sobre los patrones de diseño y se requieren programas de posgrado para ello en las escuelas de diseño. ¿Algún consejo sobre cómo comenzar a usar estas ideas en sus proyectos de diseño? [cerrado] Eche un vistazo, por ejemplo, a los Patrones de Behance, después de los cuales debe experimentar con patrones de diseño a pequeña escala. ¿Qué reglas y pautas dificultan la planificación y los negocios, y no lo hacen? [cerrado] ¡Sí, puedo explicártelo! Aprender... Lee mas