Шаблони дизайну
Шаблони креативного дизайну
Singleton - Переконайтеся, що створено лише один екземпляр класу та надайте глобальну точку доступу до об'єкта.
Фабрика (спрощена версія Factory Method) - створює об'єкти, не піддаючи клієнту логіку ідентифікації та посилається на новостворений об'єкт через загальний інтерфейс.
Фабричний метод - визначає інтерфейс для створення об'єктів, але дозволяйте підкласам вирішувати, який клас інстанціювати і посилається на новостворений об'єкт через загальний інтерфейс.
Abstract Factory - пропонує інтерфейс для створення сімейства пов'язаних об’єктів, не чітко вказуючи їх класи.
Builder - визначає екземпляр для створення об'єкта, але дозволяє підкласам вирішувати, який клас інстанціювати, і дозволяє чіткіше контролювати процес побудови.
Прототип - Вкажіть види об’єктів для створення за допомогою прототипного примірника та створіть нові об'єкти, скопіювавши цей прототип.
Шаблони поведінкового дизайну
Ланцюг відповідальності - Він уникає приєднання відправника запиту до свого одержувача, надаючи таким чином іншим об'єктам можливість обробки запиту. - Об'єкти стають частинами ланцюга, і запит надсилається від одного об'єкта до іншого по ланцюгу, поки один з об'єктів не обробляє його.
Команда - інкапсулює запит у об’єкт, дозволяє параметризувати клієнтів різними запитами та дозволяє зберегти запити в черзі.
Інтерпретатор - Давши мову, визначте подання для її граматики разом з інтерпретатором, який використовує представлення для інтерпретації речень у мові / Позначення домену до мови, мови до граматики, а граматика - для ієрархічного об'єктно-орієнтованого дизайну
Ітератор - Наведіть спосіб доступу до елементів сукупного об'єкта послідовно, не піддаючи його основного подання.
Посередник - Визначте об'єкт, який інкапсулює взаємодію набору об'єктів. Посередник сприяє слабкому з’єднанню, не даючи об'єктам чітко посилатися один на одного, і дозволяє вам змінювати їх взаємодію незалежно.
Спостережник - Визначте залежність від багатьох до об'єктів так, що коли один об'єкт змінює стан, усі його залежні сповіщаються та оновлюються автоматично.
Стратегія - Визначте сімейство алгоритмів, інкапсулюйте кожен і зробіть їх взаємозамінними. Стратегія дозволяє алгоритму змінюватись незалежно від клієнтів, які ним користуються.
Метод шаблону - Визначте скелет алгоритму в операції, відклавши кілька кроків для підкласів / Метод шаблонів дозволяє підкласам перевизначати певні етапи алгоритму, не дозволяючи їм змінювати структуру алгоритму.
Відвідувач - представляє операцію, яка повинна виконуватися на елементах об’єктної структури / Visitor дозволяє визначити нову операцію без зміни класів елементів, над якими вона працює.
Нульовий об’єкт - надайте об’єкт як сурогат за відсутністю об'єкта заданого типу. / Null Object Pattern забезпечує інтелектуальну поведінку нічого, приховуючи деталі від своїх співробітників.
Структурні конструкції
Адаптер - Перетворення інтерфейсу класу в інший інтерфейс, який очікують клієнти. / Адаптер дозволяє класам працювати разом, що не могло інакше через несумісні інтерфейси.
Міст - Складіть об’єкти в дерева структури, щоб представити частину цілу ієрархію. / Композиція дозволяє клієнтам обробляти окремі об'єкти та композиції об'єктів рівномірно.
Композитний - Компонуйте об'єкти в структури дерева, щоб представити ієрархії частини цілого. / Композиція дозволяє клієнтам обробляти окремі об'єкти та композиції об'єктів рівномірно.
Декоратор - додайте додаткові обов'язки динамічно до об'єкта.
Легка вага - використовуйте спільний доступ для підтримки великої кількості об'єктів, які мають частину свого внутрішнього стану, де інша частина стану може змінюватися.
Memento - захоплення внутрішнього стану об’єкта без порушення інкапсуляції і, таким чином, забезпечення засобу для відновлення об'єкта у початковий стан при необхідності.
Проксі - надайте «Заполнитель» для об'єкта для управління посиланнями на нього.