Паттерны «Банды четырёх» (GoF)

Все паттерны делятся на 3 основные группы по классификации GoF («Банда четырёх»), всего их 23 фундаментальных.


🏗 Порождающие (Creational)

Решают задачи создания объектов — делают процесс гибким и переиспользуемым.

ПаттернСуть
SingletonОдин единственный экземпляр класса на всё приложение
Factory MethodСоздаёт объекты через метод, без указания конкретного класса
Abstract FactoryФабрика фабрик — создаёт семейства связанных объектов
BuilderПошаговое создание сложного объекта
PrototypeКлонирование существующего объекта

🧱 Структурные (Structural)

Отвечают за организацию и композицию объектов в более крупные структуры.

ПаттернСуть
DecoratorДинамически добавляет поведение объекту
FacadeУпрощённый интерфейс для сложной подсистемы
AdapterСовместимость двух несовместимых интерфейсов
BridgeРазделяет абстракцию и реализацию
CompositeДерево объектов, где часть и целое работают одинаково
ProxyОбъект-заместитель для контроля доступа
FlyweightРазделение общего состояния между множеством объектов

🔄 Поведенческие (Behavioral)

Управляют взаимодействием и распределением ответственности между объектами.

ПаттернСуть
ObserverПодписка на события, уведомление при изменениях
StrategyВзаимозаменяемые алгоритмы в рантайме
CommandОборачивает запрос в объект (undo/redo)
IteratorПоследовательный обход коллекции
MediatorОбъект-посредник для общения между компонентами
Chain of ResponsibilityЦепочка обработчиков запроса
StateИзменение поведения объекта при смене состояния
Template MethodСкелет алгоритма, шаги переопределяются в подклассах
VisitorДобавление операций без изменения классов
MementoСохранение и восстановление состояния объекта
InterpreterГрамматика для интерпретации языка/выражений

➕ Дополнительные группы (вне GoF)

  • Module — инкапсуляция данных и методов внутри модуля (JS-специфика; не входит в GoF, по назначению ближе к структурным)
  • Concurrency patterns — работа с асинхронностью (Promise, async/await patterns)
  • Architectural patterns — MVC, MVP, MVVM, Flux/Redux

⭐ Топ паттернов для JS-разработчика

ПаттернГде встречается
ObserverEventEmitter, RxJS, DOM-события
SingletonСервисы, конфиги, подключения к БД
FactoryDI-контейнеры, создание компонентов
ModuleIIFE, ES-модули
DecoratorTypeScript-декораторы, HOC в React
ProxyРеактивность в Vue 3 (reactive())
StrategyСмена логики без цепочек if/else

См. также

  • solid — принципы SOLID