Referências
https://blog.logrocket.com/design-patterns-in-node-js-2/
Conceitos
Draft
- O decorator pattern visa extender as habilidades de um objeto/classe através do conceito de composição (OO).
- Através da implementação de diversos "decoradores", podemos alterar o comportamento de propriedades do parent.
- Uma analogia com a vida real é a utilização de roupas. Aonde temos um comportamento padrão (corpo) e que podemos alterar este comportamento extendendo novas "regras". Então, tendo frio, podemos aplicar um casaco. Tendo mais chuva, podemos aplicar uma capa de chuva por cima do casaco. Cada nova "decoração", nós temos um apply no comportamento inicial.
- In practice, the whole point of this pattern is to encapsulate new behavior into different functions or extra classes that will decorate your original object. That would give you the ability to individually add extra ones with minimum effort or change existing ones without having to affect your related code everywhere.
Pros
- You can extend an object’s behavior without making a new subclass.
- You can add or remove responsibilities from an object at runtime.
- You can combine several behaviors by wrapping an object into multiple decorators.
- Single Responsibility Principle. You can divide a monolithic class that implements many possible variants of behavior into several smaller classes.
Cons
- It’s hard to remove a specific wrapper from the wrappers stack.
- It’s hard to implement a decorator in such a way that its behavior doesn’t depend on the order in the decorators stack.
- The initial configuration code of layers might look pretty ugly.