Junior
83
questionbank

Какие паттерны проектирования вы знаете?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Порождающие:

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

Структурные:

  • Adapter: Преобразует интерфейс одного класса в другой интерфейс, ожидаемый клиентами. Позволяет работать классам с несовместимыми интерфейсами.
  • Bridge: Отделяет абстракцию от ее реализации, позволяя им изменяться независимо.
  • Composite: Компонует объекты в древовидные структуры для представления иерархий «часть-целое». Позволяет клиентам единообразно работать с отдельными объектами и композициями объектов.
  • Decorator: Динамически добавляет новые обязанности к объекту, оборачивая его в специальный объект-декоратор.
  • Facade: Предоставляет унифицированный интерфейс к набору интерфейсов подсистемы. Определяет интерфейс более высокого уровня, который упрощает использование подсистемы.
  • Flyweight: Использует разделяемое состояние между множеством мелких объектов, чтобы уменьшить объем используемой памяти и увеличить производительность.
  • Proxy: Предоставляет заместитель объекта, управляющий доступом к оригинальному объекту.

Поведенческие:

  • Chain of Responsibility: Передает запрос по цепочке обработчиков. Каждый обработчик решает, обработать ли запрос или передать его следующему обработчику в цепочке.
  • Command: Инкапсулирует запрос как объект, позволяя параметризовать клиентов с различными запросами, ставить запросы в очередь или вести их логи.
  • Interpreter: Определяет грамматическое представление для языка и включает интерпретатор для интерпретации предложений в этом языке.
  • Iterator: Предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего представления.
  • Mediator: Определяет объекты, которые управляют взаимодействием между набором других объектов. Способствует слабой связанности, позволяя объектам взаимодействовать без явного обращения друг к другу.
  • Memento: Предоставляет возможность сохранения и восстановления внутреннего состояния объекта без нарушения инкапсуляции.
  • Observer: Определяет зависимость «один ко многим» между объектами, чтобы при изменении состояния одного объекта все зависимые от него объекты уведомлялись и автоматически обновлялись.
  • State: Позволяет объекту изменять свое поведение в зависимости от своего внутреннего состояния. Каждое состояние инкапсулируется в отдельный класс.
  • Strategy: Определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Позволяет выбирать алгоритм во время выполнения.
  • Template Method: Определяет каркас алгоритма в операции, откладывая некоторые шаги до подклассов. Позволяет подклассам определять шаги алгоритма без изменения структуры самого алгоритма.
  • Visitor: Представляет операцию, которая должна быть выполнена над элементами структурой объектов. Позволяет определять новую операцию, не изменяя классы элементов, над которыми она действует.

В iOS-разработке также часто встречаются:

  • Model-View-Controller (MVC): Архитектурный паттерн, разделяющий приложение на три связанных компонента: Модель (данные и бизнес-логика), Представление (интерфейс пользователя) и Контроллер (связь между Моделью и Представлением).
  • Delegate: Паттерн, позволяющий одному объекту действовать от имени или координировать действия другого объекта.
  • Observer (NotificationCenter): Система рассылки уведомлений, позволяющая объектам получать сообщения без прямой связи друг с другом.
  • Target-Action: Механизм, используемый для отправки сообщений от элементов управления (например, кнопок) к целевому объекту.
  • Coordinator: Паттерн для управления навигационными потоками в приложении, отделяя логику навигации от контроллеров.
  • Dependency Injection: Паттерн, в котором зависимости объекта внедряются извне, а не создаются самим объектом.
swift
swift