@undefined_title

Зачем нужен декоратор?

Немного прочитал про него, но хорошо всю суть не понял, пишут - декоратор может изменять поведение объекта на лету, значит если мы определили функцию конструктор Circle c одним методом draw, то после создание объекта у нас будет только один метод, но если нам еще например понадобится поведение от объекта clear - очищать нарисованное, причем что при создании объекта в ФК не был определен метод clear, то в этой ситуации будет хорошо применить декоратор? JS позволяет изменить прототип ФК и сразу же все уже созданные объекты получат изменения, для чего декоратор если можно изменить ФК.

function Circle() {}
Circle.prototype.draw = function () { return 'drawing' }
var circle1 = new Circle();
circle1.draw() // "drawing"
circle1.clear() // is not a function
Circle.prototype.clear = function () { return 'clearing' }
circle1.clear() // "clearing"

выше изменяется поведение объекта уже после создания самого объекта, эту проблему решает декоратор? если нет, то можете рассказать для чего он нужен, и простенький пример
  • Вопрос задан
  • 1588 просмотров
Пригласить эксперта
Ответы на вопрос 2
Ответ написан
Комментировать
@undefined_title Автор вопроса
Пример из js. Писал для себя, еще не проверял с другими источниками на сколько это "правильный декоратор"
testDecorator = function(func1, func2) { return function(a, b) { return func1( func2(a, b) ) } }
func1 = a => return a * a
func2 = (a, b) => { return a + b }
countSome = testDecorator(func1, func2)
countSome(2, 2); // 16
countSome(2, 3); // 25

желаю увидеть комментарии по поводу этого декоратора
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы