Los patrones de diseño describen soluciones probadas a problemas comunes en el desarrollo de software. Christopher Alexander definió un patrón como una solución a un problema particular que se puede utilizar repetidamente en diferentes contextos. Para ser considerada un patrón, una solución debe ser efectiva y reutilizable. El documento luego describe patrones fundamentales como Delegación, Interfaz, Singleton, Factory Method y otros, explicando sus problemas, soluciones y consecuencias.