Los patrones de diseño de software proporcionan soluciones a problemas comunes de diseño mediante la reutilización de elementos probados. Los patrones incluyen esquemas arquitectónicos, de diseño y de bajo nivel, y categorizan problemas y soluciones relacionadas con la creación, estructura y comportamiento de sistemas de software. Los patrones estandarizan el lenguaje del diseño y facilitan el aprendizaje compartiendo conocimiento probado.