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