Порождающие:
- 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