¿Qué libros debo leer para aprender patrones de diseño como estudiante?

En mi experiencia, creo que comprender el contexto (con un ejemplo del mundo real) de un Patrón de diseño es más importante que los detalles precisos de implementación.

En este curso rápido sobre Patrones de diseño, aprenderá los conceptos básicos de los Patrones de diseño de GOF. Cada patrón de diseño se explicará en 2 a 3 minutos con un ejemplo del mundo real.

No se aburrirá con los detalles de implementación de cada Patrón de diseño. A veces nos referíamos a ellos, pero en su mayor parte nos centramos en ejemplos del mundo real.

Aprenderá sobre los patrones de creación, diseño estructural y comportamiento.

Patrones de diseño discutidos: Decorador, Método de fábrica, Estrategia, Singleton, Adaptador, Fachada, Método de plantilla, Iterador, Observador, Comando, Constructor, Cadena de responsabilidad, Recuerdo, Visitante, Estado, Peso mosca, Mediador, Prototipo, Proxy.

Los patrones de diseño se basan en unos pocos principios de diseño de software, por lo que aprender esos principios hace que sea más fácil “obtener” patrones particulares.

El concepto más fundamental es la asignación de responsabilidad: qué objeto debe hacer qué. Conozco dos grandes libros que pueden explicar este y otros conceptos muy bien:

  1. Aplicación de UML y patrones: una introducción al análisis orientado a objetos y al diseño y desarrollo iterativo (3a edición): Craig Larman: 0076092037224: Amazon.com: Libros: no se deje engañar por UML en el título. Este es un libro fantástico que describe los principios de asignación de responsabilidad ( GRASP ) y muestra cómo piensa un diseñador de software experimentado: algo muy valioso.
  2. Principios, patrones y prácticas ágiles en C #: Robert C. Martin, Micah Martin: 9780131857254: Amazon.com: Libros: el libro describe principios SÓLIDOS de los cuales el Principio de responsabilidad única es el más importante. Tiene C # en el título, pero el código está escrito de tal manera que cualquier compilador basado en C puede tragárselo 😉 Muy buen libro.

Ambos libros también describen algunos patrones de diseño de GOF.

Ahora, cuando comprenda los principios del diseño de software, puede tomar cualquier libro sobre patrones de diseño. Hoy en día hay patrones para todo, pero supongo que está interesado en la mayoría de los patrones de diseño conocidos, descritos en el libro clásico Gang of Four:

  1. Patrones de diseño: elementos de software orientado a objetos reutilizables: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch: 8601419047741: Amazon.com: Libros – conocido como libro GOF / Gang of Four. El libro contiene descripciones profundas de diferentes patrones de diseño, pero … el código está en Smalltalk y C ++. Las descripciones son bastante densas (profundas, pero requieren mucha energía para comprender) y muchos ejemplos se basan en GUI gordas que ya no se escriben con tanta frecuencia. Actualmente sería mejor dar ejemplos de webapps. De todos modos, no lo recomiendo como el primer libro sobre patrones de diseño .
  2. Head First Patrones de diseño: Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson: 0000596007124: Amazon.com: Libros: no tan profundos como GOF, pero al principio es importante comprender los conceptos, no todos y cada uno de los detalles de implementación. El libro es más nuevo que GOF, tiene código en Java y con ejemplos mejores (más fáciles de entender). Por ejemplo, se ha utilizado un control remoto de TV para describir el patrón de Comando, que es excelente para mostrar cómo desacoplar los botones (controladores) de las acciones que ejecutan. Buen libro para principiantes.
  3. Conociendo los principios GRASP y / o SOLID , de los libros en la parte superior, puede tomar cualquier libro reciente sobre patrones de diseño y podrá comprenderlos.

Un libro más que vale la pena leer: Refactoring to Patterns: Joshua Kerievsky: 0785342213355: Amazon.com: Books Describe los patrones de diseño como objetivo de la refactorización. Por lo general, cuando los desarrolladores escriben software refactorizan hacia / hacia patrones de diseño. Encuentro el patrón del Método compuesto , descrito en este libro, el más utilizado (casi todos los días) de todos los patrones que conozco (décimos).

Patrones de diseño: elementos de software orientado a objetos reutilizables: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch: 8601419047741: Amazon.com: Libros

Patrones de diseño explicados: una nueva perspectiva sobre el diseño orientado a objetos, 2a edición (patrones de software): Alan Shalloway, James R. Trott: 9780321247148: Amazon.com: Libros

“Patrones de diseño” es simplemente una etiqueta de lo que los buenos desarrolladores siempre han hecho. es decir, aprender cómo se han resuelto los problemas de manera efectiva en el pasado y aplicar las mismas soluciones cuando sea relevante.

Creo que todo comenzó hace unos 20 años con este libro: Patrones de diseño: elementos de software orientado a objetos reutilizables: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch: 8601419047741: Amazon.com: Libros

Le sugiero que vaya a Amazon y use las reseñas y las funciones de “mirar dentro” para encontrar un libro actualizado que le atraiga.

Sé que a veces la serie Head First pierde la marca, pero disfruté los patrones de diseño de Head First

También recomendaría que al leer sobre patrones de diseño realmente intente y encuentre formas en que se han utilizado en proyectos en los que ha trabajado anteriormente o en los marcos que usa. Puede aprender mucho sobre un sistema si reconoce que hay un patrón en su lugar.

More Interesting

¿Cuál es el mejor software para hacer videos en vivo de Facebook?

¿Qué se necesita para poder obtener un trabajo de gestión de ingeniería en Silicon Valley después de estar en desarrollo de software durante 15 años? ¿Cuáles son las habilidades imprescindibles y las habilidades agradables?

¿Es el trabajo que hacen los programadores en Google como lo que hacen las personas en otras compañías de software?

¿Las API de mensajería de texto (por ejemplo, Twilio, Nexmo) me permiten enviar mensajes como desde mi número de teléfono?

¿Hay alguien que esté buscando un certificado de experiencia en software?

¿Cuál es la diferencia entre documentación y comentarios durante la programación?

¿Cuáles son los componentes arquitectónicos críticos de un intercambio de subasta electrónica donde los compradores competirán para comprar cuentas comerciales por cobrar u otros instrumentos de deuda a los vendedores?

¿Cuál es la probabilidad de que un desarrollador de software cree 0 errores de software en su producto de trabajo el 100% del tiempo?

¿Cuál es la diferencia entre escribir débil y escribir dinámico?

¿Sería inusual que un CIO tenga la tarea de supervisar el análisis de datos y el desarrollo de software?

¿Importa una buena cultura de ingeniería? ¿Existe alguna correlación entre la fortaleza de la cultura de ingeniería de software de una empresa y su rentabilidad? A menudo escucho, por ejemplo, que el 80% de los ingenieros de software en Amazon parecen odiarlo.

Ingeniería de software: ¿Crees que 9-12 semanas en Dev Bootcamp o App Academy son suficientes para producir un desarrollador web junior?

¿Qué hace que un desarrollador front-end sea 'senior'?

¿Cuántos lenguajes de programación debo aprender en la universidad si elijo ingeniería de software?

¿Cómo se dividen las responsabilidades entre las distintas oficinas de Spotify?