Los patrones de diseño proporcionan soluciones a problemas comunes de diseño de software para facilitar la reutilización y el aprendizaje. Los patrones GoF, que incluyen patrones creacionales, estructurales y de comportamiento, son una colección ampliamente utilizada de patrones de diseño que resuelven problemas generales de diseño. Los patrones GRASP describen principios para asignar responsabilidades en el diseño orientado a objetos.