Skip to content

Instantly share code, notes, and snippets.

View AlexR0v's full-sized avatar
✔️

AlexR0v AlexR0v

✔️
View GitHub Profile

Conventional Commit Messages starline

See how a minor change to your commit message style can make a difference.

Tip

Take a look at git-conventional-commits , a CLI util to ensure these conventions, determine version and generate changelogs

Commit Message Formats

Default

@AlexR0v
AlexR0v / applying-patterns.txt
Created April 20, 2021 13:08 — forked from DmitriiNazimov/applying-patterns.txt
[Краткое описание паттернов проектирования] #Паттерны #ООП
ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ:
Паттерны предназначены для решения типичных задач, возникающих в ходе проектирования. Любой паттерн описывает задачу, которая снова и снова возникает в нашей работе, а также принцип ее решения, причем таким образом, что это решение можно потом использовать миллион раз, ничего не изобретая заново.
Все паттерны обеспечивают возможность изменения некоторой части системы независимо от других частей.
-- Паттерн — решение задачи в контексте.
Не самое понятное определение, вы не находите? Не беспокойтесь, мы разберем все его составляющие — все эти контексты, задачи и решения:
- Контекстом называется ситуация, в которой применяется паттерн. Ситуация должна быть достаточно типичной и распространенной.
- Задачей называется цель, которой вы хотите добиться в контексте, в совокупности со всеми ограничениями, присущими контексту.
- Решением называется обобщенная архитектура, которая достигает заданной цели при соблюдении набора ограничений. Решение должно быть возможно применять снова
@AlexR0v
AlexR0v / pattern-proxy.js
Created April 20, 2021 13:07 — forked from DmitriiNazimov/pattern-proxy.js
[JS ES6 Паттерн ЗАМЕСТИТЕЛЬ (proxy)] #js #ES6 #ООП Паттерны#
/**
*
* ПАТТЕРН ЗАМЕСТИТЕЛЬ (proxy)
* Предоставляет суррогатный объект, управляющий доступом к другому объекту.
*
* Заместитель это обертка, которая применяется в следующих случаях:
* 1. Ленивая инициализация (виртуальный прокси). Когда у вас есть тяжёлый объект,
* грузящий данные из файловой системы или базы данных.
* 2. Защита доступа (защищающий прокси). Когда в программе есть разные типы пользователей, и вам хочется
* защищать объект от неавторизованного доступа. Прокси может проверять доступ при каждом вызове и передавать
@AlexR0v
AlexR0v / pattern-bridge.js
Created April 20, 2021 13:07 — forked from DmitriiNazimov/pattern-bridge.js
[JS ES6 Паттерн МОСТ (bridge)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН МОСТ (bridge)
*
* Паттерн МОСТ - отделяет абстракцию от реализации, благодаря чему появляется возможность независимо изменять то и
* другое. Это структурный паттерн проектирования, который разделяет один или несколько классов на две отдельные
* иерархии — абстракцию и реализацию, позволяя изменять их независимо друг от друга.
* Например у нас есть класс Круг, и мы хотим создавать круги разного цвета, для этого нужно будет создать подклассы
* Синий Круг, Желтый круг и т.д. А если потом появятся квадраты и треугольники, то для них тоже нужно будет создавать
* большое количество подклассов. В итоге иерархия будет огромной. Логичнее создать две независимых иерархии -
@AlexR0v
AlexR0v / pattern-builder.js
Created April 20, 2021 13:07 — forked from DmitriiNazimov/pattern-builder.js
[JS ES6 Паттерн СТРОИТЕЛЬ (builder)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН СТРОИТЕЛЬ (builder (композиционный конструктор обьекта))
*
* Паттерн СТРОИТЕЛЬ - это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово.
* Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов.
* Применение: Паттерн Строитель нужен, если объект может существовать в разных вариациях или процесс
* инстанцирования состоит из нескольких шагов.
* В этом случае есть три варианта:
* - огромный конструктор(фабрика) со множеством if/else в котором легко запуться и который тяжело понять
@AlexR0v
AlexR0v / pattern-chain-of-responsibility.js
Created April 20, 2021 13:07 — forked from DmitriiNazimov/pattern-chain-of-responsibility.js
[JS ES6 Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)
*
* Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ - это поведенческий паттерн проектирования, который позволяет передавать запросы
* последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам
* и стоит ли передавать запрос дальше по цепи.
*
* Пример: у вас есть три счета (A, B, C) с разными суммами и разным приоритетом использования. Сначала проверяется A,
* если на нем достаточно денег для покупки, то цепочка прерывается. Иначе проверяется B, затем C. Цепь будет
@AlexR0v
AlexR0v / pattern-flyweight.js
Created April 20, 2021 13:06 — forked from DmitriiNazimov/pattern-flyweight.js
[JS ES6 Паттерн ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС (Flyweight)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС (Flyweight)
*
* Паттерн ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС - структурный шаблон проектирования, при котором объект, представляющий себя как
* уникальный экземпляр в разных местах программы, по факту не является таковым.
* Данный паттерн проектирования позволяет вместить большее количество объектов в отведённую оперативную память.
* Легковес экономит память, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в
* каждом объекте.
@AlexR0v
AlexR0v / pattern-mediator.js
Created April 20, 2021 13:06 — forked from DmitriiNazimov/pattern-mediator.js
[JS ES6 Паттерн ПОСРЕДНИК (mediator) ] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ПОСРЕДНИК (mediator)
*
* Паттерн ПОСРЕДНИК (mediator) - это поведенческий паттерн проектирования, который позволяет уменьшить связанность
* множества классов между собой, благодаря перемещению этих связей в один класс-посредник.
* Паттерн Посредник используется для централизации сложных взаимодействий и управляющих операций между объектами.
* Один из модулей медиатора изменяет состояние -> оповещает об этом медиатор -> медиатор оповещает об этом другие
* модули, которым положено знать о случившемся.
* Довольно популярна реализация Посредника при помощи Наблюдателя. При этом объект посредника будет выступать
@AlexR0v
AlexR0v / pattern-memento.js
Created April 20, 2021 13:06 — forked from DmitriiNazimov/pattern-memento.js
[JS ES6 Паттерн ХРАНИТЕЛЬ (memento)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ХРАНИТЕЛЬ (memento)
*
* Паттерн ХРАНИТЕЛЬ (memento) - Паттерн Хранитель используется для реализации возврата к одному из предыдущих
* состояний (например, если пользователь выполнил команду «Отменить»).
* Хранитель – это объект, в котором сохраняется внутреннее состояния другого объекта – хозяина хранителя. Для работы
* механизма отката нужно, чтобы хозяин предоставил хранитель, когда возникнет необходимость записать контрольную точку
* состояния хозяина. Только хозяину разрешено помещать в хранитель информацию и извлекать ее оттуда, для других
* объектов хранитель непрозрачен.
@AlexR0v
AlexR0v / pattern-visitor.js
Created April 20, 2021 13:06 — forked from DmitriiNazimov/pattern-visitor.js
[JS ES6 Паттерн ПОСЕТИТЕЛЬ (visitor)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ПОСЕТИТЕЛЬ (visitor)
*
* ПОСЕТИТЕЛЬ — используется для расширения возможностей комбинации объектов, т.е. паттерн Посетитель позволяет
* добавлять объектам дополнительные операции, не изменяя их исходный код.
*
* Когда вам нужно выполнить какую-то операцию над всеми элементами сложной структуры объектов, например, деревом.
* Посетитель позволяет применять одну и ту же операцию к объектам различных классов. ИЛИ когда новое поведение имеет
* смысл только для некоторых классов из существующей иерархии.