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