Considerar el patrón de diseño Decorator al diseñar un programa es útil por varias razones. En primer lugar, utilizar la estructura Decorador conlleva un alto grado de flexibilidad: las funcionalidades de las clases pueden ampliarse durante la compilación y durante el tiempo de ejecución sin necesidad de recurrir a una jerarquía de clases basadas en la herencia. Esto mejora significativamente la legibilidad del código del programa.
Debido a que la funcionalidad se divide en varias clases decoradoras, el rendimiento del software puede incrementarse. Esto facilita la recuperación e iniciación de funciones específicas. Con una clase base compleja que proporciona permanentemente todas las funciones, esta opción de recursosoptimizados no está disponible.
Sin embargo, desarrollar usando el patrón Decorador tiene también algunas desventajas. Con la introducción del patrón aumenta la complejidad del software de forma automática. La interfaz Decorador, en particular, suele contener mucho texto y términos nuevos, lo que aumenta su complejidad. Otra desventaja es el gran número de objetos Decorador, razón por la cual se recomienda una sistematización separada para evitar problemas de visualización al trabajar con subclases. Por último, las largas cadenas de llamadas de los objetos decorados (es decir, los componentes ampliados) suelen dificultar la detección de errores y por ende también el proceso de depuración.