Last major update: 25.08.2020
- Что такое авторизация/аутентификация
- Где хранить токены
- Как ставить куки ?
- Процесс логина
- Процесс рефреш токенов
- Кража токенов/Механизм контроля токенов
/** | |
* | |
* ПАТТЕРН ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility) | |
* | |
* Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ - это поведенческий паттерн проектирования, который позволяет передавать запросы | |
* последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам | |
* и стоит ли передавать запрос дальше по цепи. | |
* | |
* Пример: у вас есть три счета (A, B, C) с разными суммами и разным приоритетом использования. Сначала проверяется A, | |
* если на нем достаточно денег для покупки, то цепочка прерывается. Иначе проверяется B, затем C. Цепь будет |
/** | |
* | |
* ПАТТЕРН СТРОИТЕЛЬ (builder (композиционный конструктор обьекта)) | |
* | |
* Паттерн СТРОИТЕЛЬ - это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово. | |
* Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов. | |
* Применение: Паттерн Строитель нужен, если объект может существовать в разных вариациях или процесс | |
* инстанцирования состоит из нескольких шагов. | |
* В этом случае есть три варианта: | |
* - огромный конструктор(фабрика) со множеством if/else в котором легко запуться и который тяжело понять |
/** | |
* | |
* ПАТТЕРН КОМАНДА | |
* | |
Смысл: отделить объект-источник запроса от объекта, принимающего и выполняющего эти запросы. | |
Паттерн КОМАНДА — это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать | |
их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций. | |
Убирает прямую зависимость между объектами, вызывающими операции, и объектами, которые их непосредственно выполняют. | |
Позволяет реализовать простую отмену и повтор операций. |
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.
/** | |
* | |
* ПАТТЕРН SINGLETON | |
* | |
* Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. | |
* | |
*/ | |
/** | |
* | |
* ПАТТЕРН НАБЛЮДАТЕЛЬ (почтальон) | |
* Несколько наблюдателей (подписчиков) могут получать данные от одного субьекта (почтальона) | |
* | |
*/ | |
class Publisher { // субьект, получает и рассылает данные | |
constructor() { | |
this.observersList = []; // реестр наблюдателей (подписчиков) |
/** | |
* | |
* ПАТТЕРН ДЕКОРАТОР (обертка) | |
* Позволяет наделить обьект новыми возможностями не меняя первоначальный класс и не создавая дочерние классы | |
* Принцип работы: декоратор помещает целевой обьект в обьект обертку, кот-й запускает базовое поведение обьекта, | |
* а затем добавляет/отнимает что-то свое. | |
* | |
*/ | |
class interface_Coffee { |
ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ: | |
Паттерны предназначены для решения типичных задач, возникающих в ходе проектирования. Любой паттерн описывает задачу, которая снова и снова возникает в нашей работе, а также принцип ее решения, причем таким образом, что это решение можно потом использовать миллион раз, ничего не изобретая заново. | |
Все паттерны обеспечивают возможность изменения некоторой части системы независимо от других частей. | |
-- Паттерн — решение задачи в контексте. | |
Не самое понятное определение, вы не находите? Не беспокойтесь, мы разберем все его составляющие — все эти контексты, задачи и решения: | |
- Контекстом называется ситуация, в которой применяется паттерн. Ситуация должна быть достаточно типичной и распространенной. | |
- Задачей называется цель, которой вы хотите добиться в контексте, в совокупности со всеми ограничениями, присущими контексту. | |
- Решением называется обобщенная архитектура, которая достигает заданной цели при соблюдении набора ограничений. Решение должно быть возможно применять снова |
/** | |
* | |
* ПАТТЕРН АДАПТЕР | |
* | |
Обеспечивает совместимость классов с разными интерфейсами, т.е. выполняет роль переводчика. | |
В итоге клиент (тот кто вызывает методы) через адаптер может работать с разными классами с разными интерфейсами, даже не подозревая об этом, | |
хотя умеет пользоваться только одним интерфейсом. | |
*/ |