Паттерны «Банды четырёх» (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-разработчика
| Паттерн | Где встречается |
|---|---|
| Observer | EventEmitter, RxJS, DOM-события |
| Singleton | Сервисы, конфиги, подключения к БД |
| Factory | DI-контейнеры, создание компонентов |
| Module | IIFE, ES-модули |
| Decorator | TypeScript-декораторы, HOC в React |
| Proxy | Реактивность в Vue 3 (reactive()) |
| Strategy | Смена логики без цепочек if/else |
См. также
- solid — принципы SOLID