Встречается на 27% собеседований по Mobile

Какие есть паттерны в объектном проектировании

В ООП существует множество паттернов, которые помогают решать различные задачи проектирования и разработки ПО. Паттерны проектирования представляют собой проверенные решения типовых проблем, с которыми сталкиваются разработчики. Они способствуют написанию более чистого, понятного и масштабируемого кода. Основные категории паттернов включают в себя порождающие, структурные и поведенческие паттерны.

Порождающие паттерны
Эти паттерны связаны с процессами создания объектов, делая систему независимой от способа создания, компоновки и представления объектов.

  • Одиночка (Singleton): Обеспечивает создание только одного экземпляра класса и предоставляет глобальную точку доступа к этому экземпляру.
  • Фабричный метод (Factory Method): Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать.
  • Абстрактная фабрика (Abstract Factory): Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов.
  • Прототип (Prototype): Позволяет копировать существующие объекты без делания кода зависимым от их классов.
  • Строитель (Builder): Позволяет создавать сложные объекты пошагово, используя один и тот же процесс строительства для получения разных представлений.

Структурные паттерны
Описывают, как объединять объекты и классы в более крупные структуры.

  • Адаптер (Adapter): Позволяет объектам с несовместимыми интерфейсами работать вместе.
  • Мост (Bridge): Разделяет абстракцию и реализацию так, чтобы они могли изменяться независимо.
  • Композит (Composite): Комбинирует объекты в древовидные структуры для представления иерархий "часть-целое".
  • Декоратор (Decorator): Динамически добавляет объектам новые обязанности без изменения их реализации.
  • Фасад (Facade): Предоставляет простой интерфейс к сложной системе классов, библиотеке или фреймворку.
  • Прокси (Proxy): Предоставляет заместителя или заполнитель для другого объекта для контроля доступа к нему.

Поведенческие паттерны
Регулируют эффективное взаимодействие и распределение обязанностей между объектами.

  • Наблюдатель (Observer): Создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах.
  • Стратегия (Strategy): Определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми.
  • Состояние (State): Позволяет объекту изменять своё поведение в зависимости от своего состояния.
  • Команда (Command): Превращает запросы в объекты, позволяя передавать их как аргументы при вызове методов, ставить их в очередь, логировать и т.д.
  • Цепочка обязанностей (Chain of Responsibility): Позволяет передавать запросы последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам и следует ли передать запрос дальше по цепочке.
  • Посредник (Mediator): Позволяет уменьшить взаимосвязь между классами, вынося межклассовые взаимодействия в класс-посредник.

Эти паттерны не только помогают решать типичные задачи проектирования, но и способствуют созданию более читаемого, удобного для поддержки и масштабируемого кода.

April 10, 2024, easyoffer

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы