Димитар Георгиев

Поведенческие паттерны

Покупки 0 комментариев
Поведенческие паттерны

 

Chain Of Responsibility / Цепочка Обязанностей

  • Саздаю класс Middlewarer у каторого есть колекция обработчика - handlers
    и соответствено я могу добавлят етий обработчики и в какой момент я въйзаву 
    dispatch. 
  • Пробегаюс по стек ети обработчики и передая те даннъй каторъй в сам dispatch.
    И если вдруг какой то из handler возвращает false то далше обрабатоват 
    не надо и бъл найден той обработчик каторъй справился с етий даннъй addEventListener() 
    ето и поведенчески патерн Цепочка Обязанностей
    Саздаю класс
    Middlewarer у каторого есть колекция обработчика - handlers и соответствено
    я могу добавлят етий обработчики и в какой момент я въйзаву dispatch.
    buyTicket (money) первая попавшей старну что бъй у нас хватили денег на 
    билет и есть ли въобще билетъй. Если есть то мъй меняем количестве на адин 
    меншее и бъйбираем страну для поездке Пробегаяс по пул все възможнъй 
    ответъй и сматрю какий из етъй ответъй подходит по характеристике и их възвращая.
    Мъй проходилис по реальном сущносте, без абстракция. Mъй будем определят
    очерюднас стран не с помощю TravelAgency а с помощю Country. Гетер возвращает 
    last и когада добавляем в конец add(country)и мъй пробегаемся
    не по массиву
    всех елементов а чеерез поля next. По куда у нас ест странна (whyle) мъй 
    проверяем подходит ли она и если не подходит то мъй заменяем на current.next.
    По большо му счету TravelAgency дают интерфейс
    для перебора (Аpi)
    
    Memento / Хранитель / Снимок
    
    Memento () способ запоменат резултат ранее въйполненую функцию. Я разплатился 
    памятю для бъйстрадействие. Он просто запоменает всех предъйдущей резултат,если
    у его спрашевает значение уже ранее въйчисленнъх аргументовто он просто сразу
    его возвращает и все.
    Он позволяет ускорит програму но сжирает больше памяте 
    
    Observer / Слушатель / Наблюдатель
    
    class Observable {} ето практически EveneEmiter {}, class Observable {} 
    всегда в единствено числе а EveneEmiter {}
    может бъйт 
    в множествено количестве. еEveneEmiter {} он предназначен для собития 
    каторой должнъй сплъйват, каторой 
    можно 
    ловит а патерн  Observable {} он служит для того что бъй разпространят 
    информацию и объйчна ета информация строга 
    автентична
    (она в единственом числе и всегда один источник правда ) , в EveneEmiter {} 
    можно сколко угоно источника правда

  • Observable {} всегда в единственом числе либо на каждой вид даннъй, лобо на 
    каждой вид конекта с беккенду т.е Observable {} всегда единствен 
    источник
    правде и мъй просто ему подписъйваем Источник информация: Бекенд, кнопок,
    формачке, мишку, клавиатура, всякий EveneEmiter {} являеться источник 
    нформация 
    
    State / Состояние 
    
    Функций, методъй и класса будет работат взависимости от состояние 
    Где то 
    там в constructor () бъйл создан поле состояние и в зависимост от етой состояние
    у нас будут по разному работат методъй 

 

  • Strategy / Стратегия
  • Mъй можем отдельно от исползувание функций описат самой функцию 
    Мъй групируем все возможнъй способъй вълполнение какой - то задаче в взаимозаменяем виде
    в одном обекте, тем самом позволяем и непосредствено въйбират в време въйполнение нашего кода 

 

  • Template Method / Шаблонный метод
  • Ето практически Фактори метод с тем изключениям что здес мъй описаваем не один метод а целъй альгаритм. У класа ест метод register () что бъй зарегестрироват пользувателя , 
    получит от него данни, отфилтрироват их, въйзат ошибку но всех методъй ест в FormRegister() регистрация пользователя через форму, я определяю етот методъй каторой исползуется
    в родителски регистър. Все функций каторъй я определял, я их реализавал в дочернъйх класс Регистреация каждаго шага может каким то образам варирават и отличатся от других 
    способъй регистрация пользователя но асновной альгоритам, основнъйе действия всегда одни и тем - же ,патом прост въйзява регистър (new FormRegister).register()
  • Разница что в фактори метод мъй просто делегировали в дочернъйх елементом создание какого - то
    метода а здес мъй полностю описали целой альгоритмь, полностю через .register()
    но конкретнъйх шаги мъй позволяем переопределятся в дечерних класса. 

 

Назад Вперед
Войдите или зарегистрируйтесь
чтобы оставить комментарий