Этот документ содержит список основных шаблонов проектирования, сгруппированных по назначению. Ссылки на файлы с примерами реализации предполагают наличие репозитория с кодом.
Порождающие шаблоны занимаются созданием объектов. Они предоставляют способы создания объектов, которые упрощают процесс и делают его более гибким.
Примеры
- Singleton (Одиночка): ./creational/singleton.js Гарантирует существование только одного экземпляра класса.
- Factory Method (Абстрактный фабричный метод): ./creational/factory_method.js Определяет интерфейс для создания объекта, позволяя подклассам выбирать конкретный класс.
- Abstract Factory (Абстрактная фабрика): ./creational/abstract_factory.js Создаёт семейства связанных объектов без указания их конкретных классов.
- Builder (Строитель): ./creational/builder.js Позволяет построить сложный объект пошагово.
- Prototype (Прототип): ./creational/prototype.js Создаёт новые объекты, копируя существующий прототип.
Краткая информация с пояснениями в ./generatingPatterns.md
Структурные шаблоны определяют способы объединения классов и объектов для построения больших структур.
Примеры
- Adapter (Приспособленец): ./structural/adapter.js Преобразует интерфейс одного класса в другой, совместимый с клиентом.
- Bridge (Мост): ./structural/bridge.js Разъединяет абстракцию и её реализацию, позволяя изменять их независимо.
- Composite (Компоновщик): ./structural/composite.js Представляет иерархию объектов как древовидную структуру.
- Decorator (Декоратор): ./structural/decorator.js Добавляет объектам ответственность динамически.
- Facade (Фасад): ./structural/facade.js Предоставляет упрощённый интерфейс к сложной подсистеме.
- Flyweight (Легковес): ./structural/flyweight.js Эффективно использует память за счёт общих объектов.
- Proxy (Заместитель): ./structural/proxy.js Контролирует доступ к объекту.
Краткая информация с пояснениями в ./StructuralPattern.md
Поведенческие шаблоны описывают алгоритмы и распределения ответственности между объектами.
Примеры
- Chain of Responsibility (Цепочка обязанностей): ./behavioral/chain_of_responsibility.js Обрабатывает запрос несколькими объектами.
- Command (Команда): ./behavioral/command.js Инкапсулирует запрос в виде объекта.
- Interpreter (Интерпретатор): ./behavioral/interpreter.js Предоставляет способ интерпретации языка.
- Iterator (Итератор): ./behavioral/iterator.js Обеспечивает последовательный доступ к элементам объекта.
- Mediator (Посредник): ./behavioral/mediator.js Определяет объект, который управляет взаимодействием набора объектов.
- Memento (Хранитель): ./behavioral/memento.js Сохраняет и восстанавливает состояние объекта.
- Observer (Наблюдатель): ./behavioral/observer.js Определяет зависимость "один-ко-многим" между объектами.
- State (Состояние): ./behavioral/state.js Позволяет объекту изменять поведение в зависимости от состояния.
- Strategy (Стратегия): ./behavioral/strategy.js Определяет семейство алгоритмов, инкапсулируя каждый из них.
- Template Method (Шаблонный метод): ./behavioral/template_method.js Определяет скелет алгоритма в операции, откладывая некоторые шаги на подклассы.
- Visitor (Посетитель): ./behavioral/visitor.js Добавляет новые операции к объектам без изменения их классов.
Краткая информация с пояснениями в ./patterns_behavior.md