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 ser usada en muchas situaciones diferentes.
fuente: Wikipedia