Добрый день, изучаю библиотеку, наткнулся на обработчик хука, который в зависимости от текущей операции вызывает другой обработчик (ниже пример):
const MAKE_MAIN = 'makeMain';
const MAKE_SUBORDINATE = 'makeSubordinate'
Model.prototype.makeMain = function() {
this.operation = MAKE_MAIN;
this.save();
};
Model.prototype.makeSubordinate= function() {
this.operation = MAKE_SUBORDINATE ;
this.save();
};
Model.beforeSave( (target, option) => { /* очень простая валидация */ }); // единственный общий обработчик.
Model.afterSave( (target, options) => {
switch(target.operation) {
case MAKE_MAIN:
target.makeMainHandler();
break;
case MAKE_SUBORDINATE:
target.makeSubordinateHandler();
break;
}
});
Model.prototype.makeMainHandler = function() { /* уже конкретно делающий всю работу метод */};
Model.prototype.makeSubordinateHandler= function() { /* уже конкретно делающий всю работу метод */};
И мне показалось странным, зачем все прогонять через обработчики событий/хуки, ведь можно сразу выполнить всю работу в
makeMain
и
makeSubordinate
, не прогоняя все это через хуки, не выполняя лишних проверок и тп.
Так и код проще и каждый метод выполняет четко поставленную ему задачу, нет лишней связи, переменных указывающих "текущая операция" и тп,
единственное - общий обработчик ( валидацию в хуке, перед сохранением ) придется "продублировать", но это не страшно.
Это мне напомнило огромные редьюсеры в Redux.
На сколько я правильно мыслю, в чем плюсы подхода автора, зачем так делают ?