🎉 Ура! Після трьох років роботи, я нарешті випустив англійську версію книжки про патерни! Ось вона »
Swift

ПАТЕРНИ ПРОЕКТУВАННЯ на Swift

Каталог Swift-прикладів

Породжувальні патерни

Абстрактна фабрика

Абстрактна фабрика

Abstract Factory

Дає змогу створювати сімейства пов’язаних об’єктів, не прив’язуючись до конкретних класів створюваних об’єктів.

Будівельник

Будівельник

Builder

Дає змогу створювати складні об'єкти крок за кроком. Будівельник дає можливість використовувати один і той самий код будівництва для отримання різних відображень об'єктів.

Фабричний метод

Фабричний метод

Factory Method

Визначає загальний інтерфейс для створення об'єктів у суперкласі, дозволяючи підкласам змінювати тип створюваних об'єктів.

Прототип

Прототип

Prototype

Дає змогу копіювати об'єкти, не вдаючись у подробиці їхньої реалізації.

Одинак

Одинак

Singleton

Гарантує, що клас має лише один екземпляр, та надає глобальну точку доступу до нього.

Структурні патерни

Адаптер

Адаптер

Adapter

Дає змогу об’єктам із несумісними інтерфейсами працювати разом.

Міст

Міст

Bridge

Розділяє один або кілька класів на дві окремі ієрархії — абстракцію та реалізацію, дозволяючи змінювати код в одній гілці класів, незалежно від іншої.

Компонувальник

Компонувальник

Composite

Дає змогу згрупувати декілька об'єктів у деревоподібну структуру, а потім працювати з нею так, ніби це одиничний об'єкт.

Декоратор

Декоратор

Decorator

Дає змогу динамічно додавати об'єктам нову функціональність, загортаючи їх у корисні «обгортки».

Фасад

Фасад

Facade

Надає простий інтерфейс до складної системи класів, бібліотеки або фреймворку.

Легковаговик

Легковаговик

Flyweight

Дає змогу вмістити більшу кількість об'єктів у відведеній оперативній пам'яті. Легковаговик заощаджує пам'ять, розподіляючи спільний стан об'єктів між собою, замість зберігання однакових даних у кожному об'єкті.

Замісник

Замісник

Proxy

Дає змогу підставляти замість реальних об'єктів спеціальні об'єкти-замінники. Ці об'єкти перехоплюють виклики до оригінального об'єкта, дозволяючи зробити щось до чи після передачі виклику оригіналові.

Поведінкові патерни

Ланцюжок обов'язків

Ланцюжок обов'язків

Chain of Responsibility

Дає змогу передавати запити послідовно ланцюжком обробників. Кожен наступний обробник вирішує, чи може він обробити запит сам і чи варто передавати запит далі ланцюжком.

Команда

Команда

Command

Перетворює запити на об'єкти, дозволяючи передавати їх як аргументи під час виклику методів, ставити запити в чергу, логувати їх, а також підтримувати скасування операцій.

Ітератор

Ітератор

Iterator

Дає змогу послідовно обходити елементи складових об'єктів, не розкриваючи їхньої внутрішньої організації.

Посередник

Посередник

Mediator

Дає змогу зменшити зв'язаність великої кількості класів між собою, завдяки переміщенню цих зв'язків до одного класу-посередника.

Знімок

Знімок

Memento

Дає змогу зберігати та відновлювати минулий стан об'єктів, не розкриваючи подробиць їхньої реалізації.

Спостерігач

Спостерігач

Observer

Створює механізм підписки, що дає змогу одним об’єктам стежити й реагувати на події, які відбуваються в інших об’єктах.

Стан

Стан

State

Дає змогу об'єктам змінювати поведінку в залежності від їхнього стану. Ззовні створюється враження, ніби змінився клас об'єкта.

Стратегія

Стратегія

Strategy

Визначає сімейство схожих алгоритмів і розміщує кожен з них у власному класі. Після цього алгоритми можна заміняти один на інший прямо під час виконання програми.

Шаблонний метод

Шаблонний метод

Template Method

Визначає кістяк алгоритму, перекладаючи відповідальність за деякі його кроки на підкласи. Патерн дозволяє підкласам перевизначати кроки алгоритму, не змінюючи його загальної структури.

Відвідувач

Відвідувач

Visitor

Дає змогу додавати до програми нові операції, не змінюючи класи об'єктів, над якими ці операції можуть виконуватися.