Skip to content

Instantly share code, notes, and snippets.

View maplemap's full-sized avatar
🇺🇦

Serhiy Illarionov maplemap

🇺🇦
View GitHub Profile
@maplemap
maplemap / pattern-chain-of-responsibility.js
Created May 1, 2024 15:46 — forked from DmitriiNazimov/pattern-chain-of-responsibility.js
[JS ES6 Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)
*
* Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ - это поведенческий паттерн проектирования, который позволяет передавать запросы
* последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам
* и стоит ли передавать запрос дальше по цепи.
*
* Пример: у вас есть три счета (A, B, C) с разными суммами и разным приоритетом использования. Сначала проверяется A,
* если на нем достаточно денег для покупки, то цепочка прерывается. Иначе проверяется B, затем C. Цепь будет
@maplemap
maplemap / pattern-builder.js
Created May 1, 2024 15:46 — forked from DmitriiNazimov/pattern-builder.js
[JS ES6 Паттерн СТРОИТЕЛЬ (builder)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН СТРОИТЕЛЬ (builder (композиционный конструктор обьекта))
*
* Паттерн СТРОИТЕЛЬ - это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово.
* Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов.
* Применение: Паттерн Строитель нужен, если объект может существовать в разных вариациях или процесс
* инстанцирования состоит из нескольких шагов.
* В этом случае есть три варианта:
* - огромный конструктор(фабрика) со множеством if/else в котором легко запуться и который тяжело понять
@maplemap
maplemap / pattern-command.js
Created May 1, 2024 15:44 — forked from DmitriiNazimov/pattern-command.js
[JS ES6 Паттерн КОМАНДА (command)] #js #ES6 #Паттерны #ООП
/**
*
* ПАТТЕРН КОМАНДА
*
Смысл: отделить объект-источник запроса от объекта, принимающего и выполняющего эти запросы.
Паттерн КОМАНДА — это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать
их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций.
Убирает прямую зависимость между объектами, вызывающими операции, и объектами, которые их непосредственно выполняют.
Позволяет реализовать простую отмену и повтор операций.
@maplemap
maplemap / tokens.md
Created December 17, 2023 14:14 — forked from zmts/tokens.md
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Last major update: 25.08.2020

  • Что такое авторизация/аутентификация
  • Где хранить токены
  • Как ставить куки ?
  • Процесс логина
  • Процесс рефреш токенов
  • Кража токенов/Механизм контроля токенов
@maplemap
maplemap / clean_code.md
Created September 5, 2020 05:34 — forked from wojteklu/clean_code.md
Summary of 'Clean code' by Robert C. Martin

Code is clean if it can be understood easily – by everyone on the team. Clean code can be read and enhanced by a developer other than its original author. With understandability comes readability, changeability, extensibility and maintainability.


General rules

  1. Follow standard conventions.
  2. Keep it simple stupid. Simpler is always better. Reduce complexity as much as possible.
  3. Boy scout rule. Leave the campground cleaner than you found it.
  4. Always find root cause. Always look for the root cause of a problem.

Design rules

@maplemap
maplemap / pattern-singleton.js
Created July 19, 2020 09:35 — forked from DmitriiNazimov/pattern-singleton.js
[JS Паттерн ОДИНОЧКА SINGLETON + синтаксис ООП ES6] #js #ООП #ES6 #Инкапсуляция #Паттерны
/**
*
* ПАТТЕРН SINGLETON
*
* Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
*
*/
@maplemap
maplemap / pattern-observer.js
Created July 19, 2020 09:34 — forked from DmitriiNazimov/pattern-observer.js
[JS ES6 Паттерн НАБЛЮДАТЕЛЬ (observer)] #ООП #js #ES6 #Паттерны
/**
*
* ПАТТЕРН НАБЛЮДАТЕЛЬ (почтальон)
* Несколько наблюдателей (подписчиков) могут получать данные от одного субьекта (почтальона)
*
*/
class Publisher { // субьект, получает и рассылает данные
constructor() {
this.observersList = []; // реестр наблюдателей (подписчиков)
@maplemap
maplemap / pattern-decorator.js
Created July 19, 2020 09:34 — forked from DmitriiNazimov/pattern-decorator.js
[JS ES6 Паттерн ДЕКОРАТОР (decorator)] #Паттерны #ООП #js #ES6
/**
*
* ПАТТЕРН ДЕКОРАТОР (обертка)
* Позволяет наделить обьект новыми возможностями не меняя первоначальный класс и не создавая дочерние классы
* Принцип работы: декоратор помещает целевой обьект в обьект обертку, кот-й запускает базовое поведение обьекта,
* а затем добавляет/отнимает что-то свое.
*
*/
class interface_Coffee {
@maplemap
maplemap / applying-patterns.txt
Created July 19, 2020 09:32 — forked from DmitriiNazimov/applying-patterns.txt
[Краткое описание паттернов проектирования] #Паттерны #ООП
ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ:
Паттерны предназначены для решения типичных задач, возникающих в ходе проектирования. Любой паттерн описывает задачу, которая снова и снова возникает в нашей работе, а также принцип ее решения, причем таким образом, что это решение можно потом использовать миллион раз, ничего не изобретая заново.
Все паттерны обеспечивают возможность изменения некоторой части системы независимо от других частей.
-- Паттерн — решение задачи в контексте.
Не самое понятное определение, вы не находите? Не беспокойтесь, мы разберем все его составляющие — все эти контексты, задачи и решения:
- Контекстом называется ситуация, в которой применяется паттерн. Ситуация должна быть достаточно типичной и распространенной.
- Задачей называется цель, которой вы хотите добиться в контексте, в совокупности со всеми ограничениями, присущими контексту.
- Решением называется обобщенная архитектура, которая достигает заданной цели при соблюдении набора ограничений. Решение должно быть возможно применять снова
@maplemap
maplemap / pattern-adapter.js
Created July 19, 2020 09:30 — forked from DmitriiNazimov/pattern-adapter.js
[JS ES6 Паттерн АДАПТЕР (adapter)] #ES6 #js #Паттерны #ООП
/**
*
* ПАТТЕРН АДАПТЕР
*
Обеспечивает совместимость классов с разными интерфейсами, т.е. выполняет роль переводчика.
В итоге клиент (тот кто вызывает методы) через адаптер может работать с разными классами с разными интерфейсами, даже не подозревая об этом,
хотя умеет пользоваться только одним интерфейсом.
*/