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:
- 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.
- 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:
- 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 .
- 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.
- 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).