Design Pattern
Модуль 1
Design Patern
Andrey Gladky
KspDevelop@gmail.com 2
В основі доброго розуміння побудови коду, та й дизайну взагалі,
лежить принцип єдиної відповідальності.
Усі дизайн-патерни поділені на три великі групи, а
саме:
 Породжуючі - основним завданням таких патернів
є спростити створення об’єктів.
 Cтруктурні - формування найбільш підходящої
структури та взаємодії між класами для виконання
певних завдань.
 Поведінкові - вони або інкапсулюють поведінку, або
дозволяють її розподілити.
Andrey Gladky
KspDevelop@gmail.com 3
 Фасад - надає єдину «точку доступу» до
підсистеми, тим самим спрощуючи її використання
та розуміння
 Одинак - забезпечує існування єдиного
екземпляру класу та єдиного доступу до нього
 Будівельник - вимальовує стандартний процес
створення складного об’єкта, розділяючи логіку
будування об’єкта від його представлення
 Шаблонний Метод - задає покроково алгоритм, а
елементи алгоритму можуть бути довизначені в
похідних класах
 Декоратор – використовується для надання деякої
додаткової функціональності об'єктам
Andrey Gladky
KspDevelop@gmail.com 4
 Фабричний метод - вирішує, яку реалізацію
інстанціювати.Вирішують або нащадки фабричного
методу, або він сам, приймаючи якийсь параметер
 Абстрактна фабрика - надає простий інтерфейс
для створення об’єктів, які належать до того чи
іншого сімейства.
 Адаптер - надає можливість користуватися
об’єктом, який не є прийнятним у нашій системі і
який не можна змінити. Ми адаптуємо його
функціональність через інший, відомий нашій
системі, інтерфейс
 Міст - дозволяє розділити імплементацію від її
абстракції, таким чином реалізація може бути
змінена окремо від абстракції, оскільки вона не
наслідується від неї напряму.
Andrey Gladky
KspDevelop@gmail.com 5
 Ланцюжок Відповідальностей - Уникає зв’язності
відправника запиту із його адресатом, шляхом
надання іншим об’єктам можливість обробити
запит. Передає отримані об’єкти вздовж ланцюжка
допоки якась ланка не обробить об’єкт.
 Команда - дозволяє інкапсулювати всю
інформацію, необхідну для виконання певних
операцій, які можуть бути виконані пізніше,
використавши об’єкт команди.
 Хранитель - використовується тоді, коли ви хочете
відмінити операції без відображення внутрішньої
структури Власника (Originator — гра у нашому
прикладі). Координація операцій здійснюється
Опікуном (Caretaker — контролер гри), який
надає можливість простого збереження миттєвих
станів системи без уявлення що ці стани собою
являють.
Andrey Gladky
KspDevelop@gmail.com 6
 Спостерігач – дозволяє автоматично реагувати
багатьом об’єктам за зміную стану іншого об’єкта.
Andrey Gladky
KspDevelop@gmail.com 7
Демонстрація

Design pattern module 1

  • 1.
  • 2.
    Design Patern Andrey Gladky KspDevelop@gmail.com2 В основі доброго розуміння побудови коду, та й дизайну взагалі, лежить принцип єдиної відповідальності. Усі дизайн-патерни поділені на три великі групи, а саме:  Породжуючі - основним завданням таких патернів є спростити створення об’єктів.  Cтруктурні - формування найбільш підходящої структури та взаємодії між класами для виконання певних завдань.  Поведінкові - вони або інкапсулюють поведінку, або дозволяють її розподілити.
  • 3.
    Andrey Gladky KspDevelop@gmail.com 3 Фасад - надає єдину «точку доступу» до підсистеми, тим самим спрощуючи її використання та розуміння  Одинак - забезпечує існування єдиного екземпляру класу та єдиного доступу до нього  Будівельник - вимальовує стандартний процес створення складного об’єкта, розділяючи логіку будування об’єкта від його представлення  Шаблонний Метод - задає покроково алгоритм, а елементи алгоритму можуть бути довизначені в похідних класах  Декоратор – використовується для надання деякої додаткової функціональності об'єктам
  • 4.
    Andrey Gladky KspDevelop@gmail.com 4 Фабричний метод - вирішує, яку реалізацію інстанціювати.Вирішують або нащадки фабричного методу, або він сам, приймаючи якийсь параметер  Абстрактна фабрика - надає простий інтерфейс для створення об’єктів, які належать до того чи іншого сімейства.  Адаптер - надає можливість користуватися об’єктом, який не є прийнятним у нашій системі і який не можна змінити. Ми адаптуємо його функціональність через інший, відомий нашій системі, інтерфейс  Міст - дозволяє розділити імплементацію від її абстракції, таким чином реалізація може бути змінена окремо від абстракції, оскільки вона не наслідується від неї напряму.
  • 5.
    Andrey Gladky KspDevelop@gmail.com 5 Ланцюжок Відповідальностей - Уникає зв’язності відправника запиту із його адресатом, шляхом надання іншим об’єктам можливість обробити запит. Передає отримані об’єкти вздовж ланцюжка допоки якась ланка не обробить об’єкт.  Команда - дозволяє інкапсулювати всю інформацію, необхідну для виконання певних операцій, які можуть бути виконані пізніше, використавши об’єкт команди.  Хранитель - використовується тоді, коли ви хочете відмінити операції без відображення внутрішньої структури Власника (Originator — гра у нашому прикладі). Координація операцій здійснюється Опікуном (Caretaker — контролер гри), який надає можливість простого збереження миттєвих станів системи без уявлення що ці стани собою являють.
  • 6.
    Andrey Gladky KspDevelop@gmail.com 6 Спостерігач – дозволяє автоматично реагувати багатьом об’єктам за зміную стану іншого об’єкта.
  • 7.