Un patrón de diseño (design pattern) es una solución probada para un problema recurrente en un contexto dado. Aunque la solución se puede usar una y otra vez esto no significa que se lleve a cabo de la misma manera. Christopher Alexander utilizó el término en este sentido en su libro A pattern language (1977) donde lo aplicó a la arquitectura.
La idea de identificar patrones de diseño para resolver problemas fue importada por la ingeniería del software y la programación orientada a objetos. Más tarde, la misma idea fue aplicada por el diseño de interacción y el diseño de interfaz a los programas de escritorio, a los sitios web y a las aplicaciones en los móviles; con el paso del tiempo, algunas soluciones han funcionado mejor o han sido mejor aceptadas.
Un ejemplo de patrón de diseño es el conocido como Lienzo/paleta (Canvas/palette): un lienzo en blanco junto a una paleta con los iconos de las herramientas disponibles y que ha sido utilizado con éxito por muchos programas de edición de gráficos vectoriales y de edición de imágenes.
En la siguiente figura se pueden ver otros ejemplos de patrones de diseño: los hay para organizar información y para disponer imágenes; para introducir y visualizar datos; también los que sirven para facilitar la navegación.

Existen colecciones de patrones de diseño de interacción, algunas de ellas muy bien organizadas, donde se pueden encontrar detalles sobre su funcionalidad. Los nombres y formatos pueden variar según el autor, pero en general contienen lo siguiente:
- Qué problema se trata de resolver
- Cuándo usar el patrón
- Cuál es la solución
- Por qué usar el patrón
Los patrones de diseño pueden funcionar como soluciones prediseñadas basadas en principios y buenas prácticas; son una buena opción siempre y cuando correspondan a las necesidades del proyecto y no sólo se utilicen porque se ven bien o porque ya venían en la plantilla.