Es una solución general repetible a un problema que comúnmente ocurre en el diseño de software. Es una descripción o plantilla sobre como resolver un problema que puede ser usada en muchas situaciones diferentes.

fuente: Wikipedia