Skip to content

Instantly share code, notes, and snippets.

View AlexManSPB's full-sized avatar
Working

Alexander AlexManSPB

Working
  • Saint-Petersburg
  • 16:17 (UTC +03:00)
View GitHub Profile
@AlexManSPB
AlexManSPB / pattern-iterator.js
Created February 13, 2023 12:07 — forked from DmitriiNazimov/pattern-iterator.js
[JS ES6 Паттерн ИТЕРАТОР (iterator)] #Паттерны #ООП #js #ES6
/**
*
* ПАТТЕРН ИТЕРАТОР
*
Iterator — поведенческий шаблон проектирования. Представляет собой объект, позволяющий получить последовательный
доступ к элементам объекта-агрегата без использования описаний каждого из агрегированных объектов.
Например, такие элементы как дерево, связанный список, хеш-таблица и массив могут быть пролистаны (и модифицированы)
с помощью объекта Итератор.
@AlexManSPB
AlexManSPB / pattern-composite.js
Created February 13, 2023 12:06 — forked from DmitriiNazimov/pattern-composite.js
[JS ES6 Паттерн КОМПОНОВЩИК (composite)] #Паттерны #ООП #ES6 #js
/**
*
* ПАТТЕРН КОМПОНОВЩИК (composite)
*
* Шаблон Компоновщик позволяет единообразно обрабатывать отдельные объекты и их группы. Он работает с иерархией «часть-целое».
* Паттерн Компоновщик позволяет создавать древовидные структуры, узлами которых являются как комбинации, так и
* отдельные объекты.
* ВАЖНО: в такой структуре одни и те же операции могут применяться и к комбинациям, и к отдельным объектам.
*
@AlexManSPB
AlexManSPB / pattern-state.js
Created February 13, 2023 12:06 — forked from DmitriiNazimov/pattern-state.js
[JS ES6 Паттерн СОСТОЯНИЕ (state)] #Паттерны #ООП #ES6 #js
/**
*
* ПАТТЕРН СОСТОЯНИЕ (state)
*
* Паттерн Состояние управляет изменением поведения объекта при изменении его внутреннего состояния.
* Внешне это выглядит так, словно объект меняет свой класс.
*
* Основная идея в том, что программа может находиться в одном из нескольких состояний, которые всё время сменяют друг
* друга. Набор этих состояний, а также переходов между ними, предопределён и конечен. Находясь в разных состояниях,
* программа может по-разному реагировать на одни и те же события, которые происходят с ней.
@AlexManSPB
AlexManSPB / pattern-proxy.js
Created February 13, 2023 12:06 — forked from DmitriiNazimov/pattern-proxy.js
[JS ES6 Паттерн ЗАМЕСТИТЕЛЬ (proxy)] #js #ES6 #ООП Паттерны#
/**
*
* ПАТТЕРН ЗАМЕСТИТЕЛЬ (proxy)
* Предоставляет суррогатный объект, управляющий доступом к другому объекту.
*
* Заместитель это обертка, которая применяется в следующих случаях:
* 1. Ленивая инициализация (виртуальный прокси). Когда у вас есть тяжёлый объект,
* грузящий данные из файловой системы или базы данных.
* 2. Защита доступа (защищающий прокси). Когда в программе есть разные типы пользователей, и вам хочется
* защищать объект от неавторизованного доступа. Прокси может проверять доступ при каждом вызове и передавать
@AlexManSPB
AlexManSPB / pattern-bridge.js
Created February 13, 2023 12:06 — forked from DmitriiNazimov/pattern-bridge.js
[JS ES6 Паттерн МОСТ (bridge)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН МОСТ (bridge)
*
* Паттерн МОСТ - отделяет абстракцию от реализации, благодаря чему появляется возможность независимо изменять то и
* другое. Это структурный паттерн проектирования, который разделяет один или несколько классов на две отдельные
* иерархии — абстракцию и реализацию, позволяя изменять их независимо друг от друга.
* Например у нас есть класс Круг, и мы хотим создавать круги разного цвета, для этого нужно будет создать подклассы
* Синий Круг, Желтый круг и т.д. А если потом появятся квадраты и треугольники, то для них тоже нужно будет создавать
* большое количество подклассов. В итоге иерархия будет огромной. Логичнее создать две независимых иерархии -
@AlexManSPB
AlexManSPB / pattern-builder.js
Created February 13, 2023 12:05 — forked from DmitriiNazimov/pattern-builder.js
[JS ES6 Паттерн СТРОИТЕЛЬ (builder)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН СТРОИТЕЛЬ (builder (композиционный конструктор обьекта))
*
* Паттерн СТРОИТЕЛЬ - это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово.
* Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов.
* Применение: Паттерн Строитель нужен, если объект может существовать в разных вариациях или процесс
* инстанцирования состоит из нескольких шагов.
* В этом случае есть три варианта:
* - огромный конструктор(фабрика) со множеством if/else в котором легко запуться и который тяжело понять
@AlexManSPB
AlexManSPB / pattern-chain-of-responsibility.js
Created February 13, 2023 12:05 — forked from DmitriiNazimov/pattern-chain-of-responsibility.js
[JS ES6 Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility)
*
* Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ - это поведенческий паттерн проектирования, который позволяет передавать запросы
* последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам
* и стоит ли передавать запрос дальше по цепи.
*
* Пример: у вас есть три счета (A, B, C) с разными суммами и разным приоритетом использования. Сначала проверяется A,
* если на нем достаточно денег для покупки, то цепочка прерывается. Иначе проверяется B, затем C. Цепь будет
@AlexManSPB
AlexManSPB / pattern-flyweight.js
Created February 13, 2023 12:05 — forked from DmitriiNazimov/pattern-flyweight.js
[JS ES6 Паттерн ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС (Flyweight)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС (Flyweight)
*
* Паттерн ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС - структурный шаблон проектирования, при котором объект, представляющий себя как
* уникальный экземпляр в разных местах программы, по факту не является таковым.
* Данный паттерн проектирования позволяет вместить большее количество объектов в отведённую оперативную память.
* Легковес экономит память, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в
* каждом объекте.
@AlexManSPB
AlexManSPB / pattern-mediator.js
Created February 13, 2023 12:04 — forked from DmitriiNazimov/pattern-mediator.js
[JS ES6 Паттерн ПОСРЕДНИК (mediator) ] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ПОСРЕДНИК (mediator)
*
* Паттерн ПОСРЕДНИК (mediator) - это поведенческий паттерн проектирования, который позволяет уменьшить связанность
* множества классов между собой, благодаря перемещению этих связей в один класс-посредник.
* Паттерн Посредник используется для централизации сложных взаимодействий и управляющих операций между объектами.
* Один из модулей медиатора изменяет состояние -> оповещает об этом медиатор -> медиатор оповещает об этом другие
* модули, которым положено знать о случившемся.
* Довольно популярна реализация Посредника при помощи Наблюдателя. При этом объект посредника будет выступать
@AlexManSPB
AlexManSPB / pattern-memento.js
Created February 13, 2023 12:04 — forked from DmitriiNazimov/pattern-memento.js
[JS ES6 Паттерн ХРАНИТЕЛЬ (memento)] #js #ES6 #ООП #Паттерны
/**
*
* ПАТТЕРН ХРАНИТЕЛЬ (memento)
*
* Паттерн ХРАНИТЕЛЬ (memento) - Паттерн Хранитель используется для реализации возврата к одному из предыдущих
* состояний (например, если пользователь выполнил команду «Отменить»).
* Хранитель – это объект, в котором сохраняется внутреннее состояния другого объекта – хозяина хранителя. Для работы
* механизма отката нужно, чтобы хозяин предоставил хранитель, когда возникнет необходимость записать контрольную точку
* состояния хозяина. Только хозяину разрешено помещать в хранитель информацию и извлекать ее оттуда, для других
* объектов хранитель непрозрачен.