Рубрики
Без рубрики

Как использовать декораторы с фабричными функциями

Откройте для себя функциональный JavaScript был назван одним из лучших новых функциональных книг по программированию BookAuthority! Метод декораторы – это инструмент для повторного использования общей логики. Они дополняют объектно-ориентированные программирование. Декораторы инкапсулируют ответственность, переданные разными объектами. Рассмотрим следующий код: функция TOOSTORE (CUNCEUSER) {пусть TODOS = []; Функция Add (Todo)

Автор оригинала: FreeCodeCamp Community Member.

Откройте для себя функциональный JavaScript был назван одним из Лучшие новые функциональные программирования книги BookAuthority !

Метод декораторы – это инструмент для повторного использования общей логики. Они дополняют объектно-ориентированные программирование. Декораторы инкапсулируют ответственность, переданные разными объектами.

Рассмотрим следующий код :

function TodoStore(currentUser){
  let todos = [];
  
  function add(todo){
    let start = Date.now();
    if(currentUser.isAuthenticated()){
      todos.push(todo);
    } else {
      throw "Not authorized to perform this operation";
    }
            
    let duration = Date.now() - start;
    console.log("add() duration : " + duration);
  }
    
  return Object.freeze({
    add
  });  
}

Намерение Добавить () Метод состоит в том, чтобы добавить новые до DOS во внутреннее состояние. Кроме того, метод должен проверить авторизацию пользователя и регистрировать продолжительность выполнения. Эти две вещи являются вторичными проблемами и фактически могут повторяться в других методах.

Представьте, что мы можем инкапсулировать эти вторичные обязанности в функциях. Тогда мы можем написать код следующим образом:

function TodoStore(){
  let todos = [];
  
  function add(todo){
    todos.push(todo);
  }
    
  return Object.freeze({
     add:compose(logDuration,authorize)(add) 
  }); 
}

Теперь Добавить () Метод просто добавляет Todo в список. Другие обязанности реализуются путем украшения метода.

Лог действия () и Авторизация () декораторы.

Продолжительность журнала

Общим сценарием является регистрирующий продолжительность вызова метода. Следующий декоратор Журнал продолжительность синхронного вызова.

function logDuration(fn){
  return function decorator(...args){
    let start = Date.now();
    let result = fn.apply(this, args);
    let duration = Date.now() - start;
    console.log(fn.name + "() duration : " + duration);
    return result;
  }
}

Обратите внимание, как называлась оригинальная функция – путем прохождения текущего значения это И все аргументы: fn.apply (это, args) Отказ

Откройте для себя функциональный JavaScript был назван одним из Лучшие новые функциональные программирования книги BookAuthority !

Для получения дополнительной информации о применении методов функциональных программиров в реакции посмотрите на Функциональный реагировать Отказ

Учить Функциональный реагировать в проекте, основанном на проекте, с Функциональная архитектура с реагированием и redux Отказ

Следуйте в Twitter