Diseñar software orientado a objetos que cumplan con el paradigma no es tan simple y diseñar software reutilizable y mantenible orientado a objetos es más difícil aún. Diseños generales y flexibles son muy dificiles de conseguir la primera vez, pero ¿Qué conocimientos posee un programador experto que desconoce uno que se considera novato? La respuesta ante este interrogante stá en la capacidad de reutilizar soluciones que funcionaron en el pasado, es decir, aprovechar la experiencia y la utilización de patrones. La clave para la reutilización de software está en anticiparse a los nuevos requisitos y cambios, de modo que los sistemas evolucionen de forma adecuada. Los patrones conducen a arquitecturas más pequeñas, más simples y más comprensibles. Los patrones de diseño proporcionan soluciones elegantes y reutilizables a los problemas más frecuentes de desarrollo de software en un contexto particular. Los síntomas de una aplicación informática mal construida son la rigidez, la fragilidad y la inmovilidad. La rigidez hace referencia a la tendencia del software a ser difícil de cambiar. La fragilidad esta relacionada con la rigidez, y se nota cuando un cambio en alguna parte del software ocasiona cambios en otros sectores. Finalmente, la inmovilidad es la inhabilidad para reutilizar el software. El principal objetivo del libro es explicar de manera práctica cada uno de los patrones de diseño. Se utiliza una plantilla sencilla y reducida para cada patrón, de forma que el interesado comprenda de una forma sencilla los componentes fundamentales de los patrones de diseño. Para ello, se plantea un ejemplo, muy bien seleccionado y detallado, por medio del cual se describe el uso del patron. Además, se plantean varios diagramas UML para comprender los componentes. En seguida, se presenta el código fuente de la solución en dos lenguajes de programación ampliamente utilizados: java y C#. Al final de cada patrón se plantean ejercicios donde se pone a prueba la facilidad de hacerle cambios a los ejemplos anteriormente expuestos.