El concepto de Patrón
Los [Patrónes de Diseño] (Design Patterns) son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño, como la arquitectura (que de hecho es de donde surge la idea). Un patrón de diseño ofrece una solución abstracta a un problema de diseño que aparece muy frecuentemente, y su adaptación a las prácticas de la Ingeniería de Software surge tras la tesis de [Erich Gamma], publicados en un libro que recoge no sólo su de?nición, sino todo un catálogo de PDs aplicables a la programación básica orientada a objetos, y que cubren la mayor parte de los pequeños problemas recurrentes que se plantean en el desarrollo de cualquier programa.
Su objetivo principal es promover y mejorar la Reutilización dentro del software, y acá ya no hablamos solo de reutilización de código, sino de diseños y de [arquitecturas software], lo que hoy en día significa la utilización de Frameworks o Marcos de Trabajo, que basicamente son un diseño reutilizable de toda o parte de la arquitectura de un sistema, un esqueleto de una aplicación, que debe ser adaptado a necesidades concretas por el programador.
Además de los patrones de diseño también existe el concepto de [Antipatrón de Diseño], que es semejante a la idea de un patrón, pero intenta prevenir contra errores comunes de diseño en el software. La idea de los antipatrones es dar a conocer los problemas que acarrean ciertos diseños muy frecuentes, para intentar evitar que diferentes sistemas acaben una y otra vez en el mismo callejón sin salida por haber cometido los mismos errores.