Шпаргалка по шаблонам проектирования
10.02.2025
Last updated
10.02.2025
Last updated
Что такое шаблоны проектирования?
Это как читы для кодинга – заранее придуманные решения, которые помогают писать код так, чтобы он был:
Читаемым
Гибким
Удобным для поддержки
Memento (Хранитель) – сейвим состояние объекта и можем откатить назад.
Chain of Responsibility (Цепочка обязанностей) – передаём запрос по цепочке, пока кто-то не обработает.
Observer (Наблюдатель) – один объект сообщает изменения другим.
Command (Команда) – превращаем запросы в объекты (как макросы).
State (Состояние) – поведение объекта зависит от его состояния.
Interpreter (Интерпретатор) – разбор и выполнение языка.
Strategy (Стратегия) – разные алгоритмы для одной задачи.
Iterator (Итератор) – удобный перебор коллекций.
Template Method (Шаблонный метод) – базовая структура алгоритма с настраиваемыми шагами.
Mediator (Посредник) – управление взаимодействием без прямых связей.
Visitor (Посетитель) – добавляем новую логику без изменения классов.
Adapter (Адаптер) – заставляет несовместимые интерфейсы работать вместе.
Proxy (Прокси) – ставит объект-посредник для контроля доступа.
Bridge (Мост) – отделяет интерфейс от реализации.
Composite (Компоновщик) – работаем с деревьями объектов как с одним.
Decorator (Декоратор) – добавляет объекту новые возможности без изменения кода.
Facade (Фасад) – даёт простой интерфейс к сложной системе.
Flyweight (Приспособленец) – экономим память, используя повторяющиеся объекты.
Abstract Factory (Абстрактная фабрика) – создаёт семейства объектов.
Builder (Строитель) – пошагово собираем сложный объект.
Factory Method (Фабричный метод) – создание объектов делегируется подклассам.
Prototype (Прототип) – клонируем объекты вместо создания с нуля.
Singleton (Одиночка) – гарантируем, что объект будет один на весь проект.
— Порождающие (создают объекты по умному)
— Структурные (упрощают структуру кода)
— Поведенческие (контролируют взаимодействие объектов)
Агрегация – объект A использует объект B, но B может существовать без A.
Композиция – объект A содержит B, и B без A – ничто.
Зависимость – A зависит от B (если B ломается, то A тоже).
Обобщение – A наследует B или реализует интерфейс B.