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 Відвідувач | Дає змогу додавати до програми нові операції, не змінюючи класи об'єктів, над якими ці операції можуть виконуватися. |