Паттерн проектирования #supapattern

Decorator (Декоратор)
🎁



Тип: структурный



Суть: позволяет динамически добавлять объектам новую функциональность, создавая над ними некую обёртку. Также объёкт может иметь несколько декораторов.



Применение:

Представьте, что у нас есть класс Coffee. И мы хотим создать дочерние классы Espresso, Latte, Cappuchino. И потом сделать каждый из них с сахаром нам придётся создавать класс EspressoWithSugar, который наследуется от Espresso, LatteWithSugar и так далее. У нас получается огромное количество классов. Мы можем избежать этого создав декоратор @‘withSugar 🤭



Думаю те, кто работал с vue-class-compoent уже знакомы с декораторами @‘Component, @‘Prop и т.д.



Также, те кто разрабатывает в связке mobx + react должен был встретить декоратор @‘observer с классовым компонентом



Реализация:

Не стал писать собественную реализацию, в связи с тем, что никогда этого не делал и вряд ли в кодерской рутине тебе приспичет сделать это 🙂

Но для примера всё-таки скину чужую реализацию 🎁