This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН СОСТОЯНИЕ (state) | |
* | |
* Паттерн Состояние управляет изменением поведения объекта при изменении его внутреннего состояния. | |
* Внешне это выглядит так, словно объект меняет свой класс. | |
* | |
* Основная идея в том, что программа может находиться в одном из нескольких состояний, которые всё время сменяют друг | |
* друга. Набор этих состояний, а также переходов между ними, предопределён и конечен. Находясь в разных состояниях, | |
* программа может по-разному реагировать на одни и те же события, которые происходят с ней. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН НАБЛЮДАТЕЛЬ (почтальон) | |
* Несколько наблюдателей (подписчиков) могут получать данные от одного субьекта (почтальона) | |
* | |
*/ | |
class Publisher { // субьект, получает и рассылает данные | |
constructor() { | |
this.observersList = []; // реестр наблюдателей (подписчиков) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН ПОСРЕДНИК (mediator) | |
* | |
* Паттерн ПОСРЕДНИК (mediator) - это поведенческий паттерн проектирования, который позволяет уменьшить связанность | |
* множества классов между собой, благодаря перемещению этих связей в один класс-посредник. | |
* Паттерн Посредник используется для централизации сложных взаимодействий и управляющих операций между объектами. | |
* Один из модулей медиатора изменяет состояние -> оповещает об этом медиатор -> медиатор оповещает об этом другие | |
* модули, которым положено знать о случившемся. | |
* Довольно популярна реализация Посредника при помощи Наблюдателя. При этом объект посредника будет выступать |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН ИТЕРАТОР | |
* | |
Iterator — поведенческий шаблон проектирования. Представляет собой объект, позволяющий получить последовательный | |
доступ к элементам объекта-агрегата без использования описаний каждого из агрегированных объектов. | |
Например, такие элементы как дерево, связанный список, хеш-таблица и массив могут быть пролистаны (и модифицированы) | |
с помощью объекта Итератор. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН КОМАНДА | |
* | |
Смысл: отделить объект-источник запроса от объекта, принимающего и выполняющего эти запросы. | |
Паттерн КОМАНДА — это поведенческий паттерн проектирования, который превращает запросы в объекты, позволяя передавать | |
их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций. | |
Убирает прямую зависимость между объектами, вызывающими операции, и объектами, которые их непосредственно выполняют. | |
Позволяет реализовать простую отмену и повтор операций. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН ЦЕПОЧКА ОБЯЗАННОСТЕЙ (Chain of responsibility) | |
* | |
* Паттерн ЦЕПОЧКА ОБЯЗАННОСТЕЙ - это поведенческий паттерн проектирования, который позволяет передавать запросы | |
* последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам | |
* и стоит ли передавать запрос дальше по цепи. | |
* | |
* Пример: у вас есть три счета (A, B, C) с разными суммами и разным приоритетом использования. Сначала проверяется A, | |
* если на нем достаточно денег для покупки, то цепочка прерывается. Иначе проверяется B, затем C. Цепь будет |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН ЗАМЕСТИТЕЛЬ (proxy) | |
* Предоставляет суррогатный объект, управляющий доступом к другому объекту. | |
* | |
* Заместитель это обертка, которая применяется в следующих случаях: | |
* 1. Ленивая инициализация (виртуальный прокси). Когда у вас есть тяжёлый объект, | |
* грузящий данные из файловой системы или базы данных. | |
* 2. Защита доступа (защищающий прокси). Когда в программе есть разные типы пользователей, и вам хочется | |
* защищать объект от неавторизованного доступа. Прокси может проверять доступ при каждом вызове и передавать |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН SINGLETON | |
* | |
* Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. | |
* | |
*/ | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС (Flyweight) | |
* | |
* Паттерн ПРИСПОСОБЛЕНЕЦ/ЛЕГКОВЕС - структурный шаблон проектирования, при котором объект, представляющий себя как | |
* уникальный экземпляр в разных местах программы, по факту не является таковым. | |
* Данный паттерн проектирования позволяет вместить большее количество объектов в отведённую оперативную память. | |
* Легковес экономит память, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в | |
* каждом объекте. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* ПАТТЕРН АДАПТЕР | |
* | |
Обеспечивает совместимость классов с разными интерфейсами, т.е. выполняет роль переводчика. | |
В итоге клиент (тот кто вызывает методы) через адаптер может работать с разными классами с разными интерфейсами, даже не подозревая об этом, | |
хотя умеет пользоваться только одним интерфейсом. | |
*/ |
NewerOlder