GOF Patterns Short - makstron/info GitHub Wiki

Generating

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

Pattern name Description
Factory Method Фабричний метод Визначає загальний інтерфейс для створення об'єктів у суперкласі, дозволяючи підкласам змінювати тип створюваних об'єктів.
Abstract Factory Абстрактна фабрика Дає змогу створювати сімейства пов’язаних об’єктів, не прив’язуючись до конкретних класів створюваних об’єктів.
Builder Будівельник Дає змогу створювати складні об'єкти крок за кроком. Будівельник дає можливість використовувати один і той самий код будівництва для отримання різних відображень об'єктів.
Prototype Прототип Дає змогу копіювати об'єкти, не вдаючись у подробиці їхньої реалізації.
Singleton Одинак Гарантує, що клас має лише один екземпляр, та надає глобальну точку доступу до нього.

Structura

Структурні патерни проектування

Pattern name Description
Adapter Адаптер Дає змогу об’єктам із несумісними інтерфейсами працювати разом.
Bridge Міст Розділяє один або кілька класів на дві окремі ієрархії — абстракцію та реалізацію, дозволяючи змінювати код в одній гілці класів, незалежно від іншої.
Composite Компонувальник Дає змогу згрупувати декілька об'єктів у деревоподібну структуру, а потім працювати з нею так, ніби це одиничний об'єкт.
Decorator Декоратор Дає змогу динамічно додавати об'єктам нову функціональність, загортаючи їх у корисні «обгортки».
Facade Фасад Надає простий інтерфейс до складної системи класів, бібліотеки або фреймворку.
Flyweight Легковаговик Дає змогу вмістити більшу кількість об'єктів у відведеній оперативній пам'яті. Легковаговик заощаджує пам'ять, розподіляючи спільний стан об'єктів між собою, замість зберігання однакових даних у кожному об'єкті.
Proxy Замісник Дає змогу підставляти замість реальних об'єктів спеціальні об'єкти-замінники. Ці об'єкти перехоплюють виклики до оригінального об'єкта, дозволяючи зробити щось

Behavioral

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

Pattern name Description
Chain of Responsibility Ланцюжок обов'язків Дає змогу передавати запити послідовно ланцюжком обробників. Кожен наступний обробник вирішує, чи може він обробити запит сам і чи варто передавати запит далі ланцюжком.
Command Команда Перетворює запити на об'єкти, дозволяючи передавати їх як аргументи під час виклику методів, ставити запити в чергу, логувати їх, а також підтримувати скасування операцій.
Iterator Ітератор Дає змогу послідовно обходити елементи складових об'єктів, не розкриваючи їхньої внутрішньої організації.
Mediator Посередник Дає змогу зменшити зв'язаність великої кількості класів між собою, завдяки переміщенню цих зв'язків до одного класу-посередника.
Memento Знімок Дає змогу зберігати та відновлювати минулий стан об'єктів, не розкриваючи подробиць їхньої реалізації.
Observer Спостерігач Створює механізм підписки, що дає змогу одним об’єктам стежити й реагувати на події, які відбуваються в інших об’єктах.
State Стан Дає змогу об'єктам змінювати поведінку в залежності від їхнього стану. Ззовні створюється враження, ніби змінився клас об'єкта.
Strategy Стратегія Визначає сімейство схожих алгоритмів і розміщує кожен з них у власному класі. Після цього алгоритми можна заміняти один на інший прямо під час виконання програми.
Template Method Шаблонний метод Визначає кістяк алгоритму, перекладаючи відповідальність за деякі його кроки на підкласи. Патерн дозволяє підкласам перевизначати кроки алгоритму, не змінюючи його загальної структури.
Visitor Відвідувач Дає змогу додавати до програми нові операції, не змінюючи класи об'єктів, над якими ці операції можуть виконуватися.

Шпаргалка по шаблонам проектирования