Skip to content

Instantly share code, notes, and snippets.

View AlexR0v's full-sized avatar
✔️

AlexR0v AlexR0v

✔️
View GitHub Profile
@AlexR0v
AlexR0v / pattern-state.js
Created April 20, 2021 13:05 — forked from DmitriiNazimov/pattern-state.js
[JS ES6 Паттерн СОСТОЯНИЕ (state)] #Паттерны #ООП #ES6 #js
/**
*
* ПАТТЕРН СОСТОЯНИЕ (state)
*
* Паттерн Состояние управляет изменением поведения объекта при изменении его внутреннего состояния.
* Внешне это выглядит так, словно объект меняет свой класс.
*
* Основная идея в том, что программа может находиться в одном из нескольких состояний, которые всё время сменяют друг
* друга. Набор этих состояний, а также переходов между ними, предопределён и конечен. Находясь в разных состояниях,
* программа может по-разному реагировать на одни и те же события, которые происходят с ней.
@AlexR0v
AlexR0v / pattern-iterator.js
Created April 20, 2021 13:05 — forked from DmitriiNazimov/pattern-iterator.js
[JS ES6 Паттерн ИТЕРАТОР (iterator)] #Паттерны #ООП #js #ES6
/**
*
* ПАТТЕРН ИТЕРАТОР
*
Iterator — поведенческий шаблон проектирования. Представляет собой объект, позволяющий получить последовательный
доступ к элементам объекта-агрегата без использования описаний каждого из агрегированных объектов.
Например, такие элементы как дерево, связанный список, хеш-таблица и массив могут быть пролистаны (и модифицированы)
с помощью объекта Итератор.
@AlexR0v
AlexR0v / pattern-template-method.js
Created April 20, 2021 13:05 — forked from DmitriiNazimov/pattern-template-method.js
[JS ES6 Паттерн ШАБЛОННЫЙ МЕТОД (template method)] #js #ES6 #Паттерны #ООП
/**
*
* ПАТТЕРН ШАБЛОННЫЙ МЕТОД
*
Задает «скелет» алгоритма в методе, оставляя определение реализации некоторых шагов субклассам.
Субклассы могут переопределять некоторые части алгоритма без изменения его структуры.
Методы внутри шаблонного метода могут быть пустыми, выдавать ошибку если не описаны в субклассе или иметь реализацию по умолчанию.
Применение:
1. Когда подклассы должны расширять базовый алгоритм, не меняя его структуры.
2. Когда у вас есть несколько классов, делающих одно и то же с незначительными отличиями. Если вы редактируете один
@AlexR0v
AlexR0v / pattern-facade.js
Created April 20, 2021 13:05 — forked from DmitriiNazimov/pattern-facade.js
[JS ES6 Паттерн ФАСАД (facade)] #js #ES6 #Паттерны #ООП
/**
*
* ПАТТЕРН ФАСАД
*
Предоставляет унифицированный интерфейс к группе интерфейсов подсистемы. Фасад определяет высокоуровневый интерфейс, упрощающий работу с подсистемой.
Превращает сложный интерфейс с множеством методов в простой интерфейс с минимум методов.
В данном случае интерфейс фасада компьюетра будет иметь всего 2 метода - вкл/выкл, при том что под капотом выполняется
12 методов.
Таким образом отделяется код клиента от кода реализации.
@AlexR0v
AlexR0v / pattern-adapter.js
Created April 20, 2021 13:05 — forked from DmitriiNazimov/pattern-adapter.js
[JS ES6 Паттерн АДАПТЕР (adapter)] #ES6 #js #Паттерны #ООП
/**
*
* ПАТТЕРН АДАПТЕР
*
Обеспечивает совместимость классов с разными интерфейсами, т.е. выполняет роль переводчика.
В итоге клиент (тот кто вызывает методы) через адаптер может работать с разными классами с разными интерфейсами, даже не подозревая об этом,
хотя умеет пользоваться только одним интерфейсом.
*/
@AlexR0v
AlexR0v / pattern-command.js
Created April 20, 2021 13:04 — forked from DmitriiNazimov/pattern-command.js
[JS ES6 Паттерн КОМАНДА (command)] #js #ES6 #Паттерны #ООП
/**
*
* ПАТТЕРН КОМАНДА
*
Смысл: отделить объект-источник запроса от объекта, принимающего и выполняющего эти запросы.
Паттерн КОМАНДА — это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать
их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций.
Убирает прямую зависимость между объектами, вызывающими операции, и объектами, которые их непосредственно выполняют.
Позволяет реализовать простую отмену и повтор операций.
@AlexR0v
AlexR0v / pattern-decorator.js
Created April 20, 2021 13:03 — forked from DmitriiNazimov/pattern-decorator.js
[JS ES6 Паттерн ДЕКОРАТОР (decorator)] #Паттерны #ООП #js #ES6
/**
*
* ПАТТЕРН ДЕКОРАТОР (обертка)
* Позволяет наделить обьект новыми возможностями не меняя первоначальный класс и не создавая дочерние классы
* Принцип работы: декоратор помещает целевой обьект в обьект обертку, кот-й запускает базовое поведение обьекта,
* а затем добавляет/отнимает что-то свое.
*
*/
class interface_Coffee {
@AlexR0v
AlexR0v / pattern-observer.js
Created April 20, 2021 13:02 — forked from DmitriiNazimov/pattern-observer.js
[JS ES6 Паттерн НАБЛЮДАТЕЛЬ (observer)] #ООП #js #ES6 #Паттерны
/**
*
* ПАТТЕРН НАБЛЮДАТЕЛЬ (почтальон)
* Несколько наблюдателей (подписчиков) могут получать данные от одного субьекта (почтальона)
*
*/
class Publisher { // субьект, получает и рассылает данные
constructor() {
this.observersList = []; // реестр наблюдателей (подписчиков)
@AlexR0v
AlexR0v / pattern-singleton.js
Created April 20, 2021 12:59 — forked from DmitriiNazimov/pattern-singleton.js
[JS Паттерн ОДИНОЧКА SINGLETON + синтаксис ООП ES6] #js #ООП #ES6 #Инкапсуляция #Паттерны
/**
*
* ПАТТЕРН SINGLETON
*
* Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
*
*/
// Файл "tsconfig.json":
// - устанавливает корневой каталог проекта TypeScript;
// - выполняет настройку параметров компиляции;
// - устанавливает файлы проекта.
// Присутствие файла "tsconfig.json" в папке указывает TypeScript, что это корневая папка проекта.
// Внутри "tsconfig.json" указываются настройки компилятора TypeScript и корневые файлы проекта.
// Программа компилятора "tsc" ищет файл "tsconfig.json" сначала в папке, где она расположена, затем поднимается выше и ищет в родительских папках согласно их вложенности друг в друга.
// Команда "tsc --project C:\path\to\my\project\folder" берет файл "tsconfig.json" из папки, расположенной по данному пути.
// Файл "tsconfig.json" может быть полностью пустым, тогда компилятор скомпилирует все файлы с настройками заданными по умолчанию.
// Опции компилятора, перечисленные в командной строке перезаписывают собой опции, заданные в файле "tsconfig.json".