Паттерны

О чем будем говорить?

О чем будем говорить?

О паттернах в целом — что это такое, зачем нужно

Как паттерны появляются от задачи 

Разбор явных паттернов а библиотеках

KISS

Паттерны

в реальной жизни

Уборка?

Получение паспорта?

Госуслуги?

Какие паттерны вам известны?

Стратегия

function reducer(state = {}, action) {
    switch(action.type) {
        case 'RECEIVE_VACANCY': 
            return {
              ...state, 
              ...action.vacancy, 
              status: 'RECEIVED'
            };
            
        case 'FETCH_VACANCY': 
            return {
              ...state, 
              ...action.vacancy, 
              status: 'LOADING'
            };
            
        default: 
        	return state;
    }
}

Стратегия

createReducer({}, {
    RECEIVE_VACANCY: () => ({
      ...state, 
      ...action.vacancy, 
      status: 'RECEIVED'
    }),
    FETCH_VACANCY: () => ({
       ...state, 
       ...action.vacancy, 
       status: 'LOADING'
    })
});

Декоратор

class Cat {
  meow() {
    
  }
}

Декоратор

@mrrrr()
class Cat {
  meow() {
    
  }
}

Что почитать?

Откуда паттерны возникают?

Декоратор

class Cat {
  meow() {
    
  }
}

Декоратор

class Cat {
  meow() {
    
  }
}

class CatWrapper extends Cat {
  constructor() {super()}
  sounds = []
  register(newSound) {
    this.sounds.push(newSound);
  }
  meow() {
    this.sounds.forEach(sound => sound());
    super.meow();
  }
}

Как паттерны возникают в коде?

Как решения строятся на паттернах?

Разберем построение либ на паттернах

Когда не нужно следовать паттернам

Made with Slides.com