Este es uno de los patrones de diseño de software de mayor popularidad al momento.
Por qué?
Favorece la implementación de clases que no son cohesivas, privilegia el código reusable, y libera a nuestro software del paradigma de las dependencias que muchas veces le impiden evolucionar. Por medio de este, podemos crear piezas de código para usar en nuestro software, y cuya arquitectura une los componentes, en vez de que los componentes se liguen a sí mismos.