SlideShare a Scribd company logo
SLIDESMANIA.C
Паттерни проєктування (Python)
SLIDESMANIA.C
Патерн проектування — це типовий спосіб вирішення
певної проблеми, що часто зустрічається при проектуванні
архітектури програм.
SLIDESMANIA.C
SLIDESMANIA.C
Перевірені рішення. Ви витрачаєте менше часу, використовуючи готові
рішення, замість повторного винаходу велосипеда. До деяких рішень
ви могли б дійти й самотужки, але багато які з них стануть для вас
відкриттям.
Стандартизація коду. Ви робите менше прорахунків при проектуванні,
використовуючи типові уніфіковані рішення, оскільки всі приховані в
них проблеми вже давно знайдено.
Загальний словник програмістів. Ви вимовляєте назву патерна, замість
того, щоб годину пояснювати іншим програмістам, який крутий дизайн
ви придумали і які класи для цього потрібні.
Навіщо знати паттерни?
SLIDESMANIA.C
Типи паттернів
● Породжуючі патерни піклуються
про гнучке створення об’єктів
без внесення в програму зайвих
залежностей.
● Структурні патерни показують
різні способи побудови зв’язків
між об’єктами.
● Поведінкові патерни піклуються
про ефективну комунікацію між
SLIDESMANIA.C
Реалізація…
SLIDESMANIA.C
SLIDESMANIA.C
Фабричний метод — це породжувальний патерн проектування,
який визначає загальний інтерфейс для створення об’єктів у
суперкласі, дозволяючи підкласам змінювати тип
створюваних об’єктів.
SLIDESMANIA.C
SLIDESMANIA.C
 Позбавляє клас від прив’язки до
конкретних класів продуктів.
 Виділяє код виробництва
продуктів в одне місце,
спрощуючи підтримку коду.
 Спрощує додавання нових
продуктів до програми.
 Реалізує принцип
відкритості/закритості.
Може призвести до створення
великих паралельних ієрархій
класів, адже для кожного класу
продукту потрібно створити
власний підклас творця.
SLIDESMANIA.C
SLIDESMANIA.C
Абстрактна фабрика — це породжувальний патерн
проектування, що дає змогу створювати сімейства пов’язаних
об’єктів, не прив’язуючись до конкретних класів
створюваних об’єктів.
SLIDESMANIA.C
SLIDESMANIA.C
 Гарантує поєднання створюваних
продуктів.
 Звільняє клієнтський код від
прив’язки до конкретних класів
продукту.
 Виділяє код виробництва
продуктів в одне місце,
спрощуючи підтримку коду.
 Спрощує додавання нових
продуктів до програми.
 Реалізує принцип
відкритості/закритості.
Ускладнює код програми
внаслідок введення великої
кількості додаткових класів.
Вимагає наявності всіх типів
продукту в кожній варіації.
SLIDESMANIA.C
SLIDESMANIA.C
Декоратор — це структурний патерн проектування, що дає
змогу динамічно додавати об’єктам нову функціональність,
загортаючи їх у корисні «обгортки».
SLIDESMANIA.C
SLIDESMANIA.C
 Більша гнучкість, ніж у
спадкування.
 Дозволяє додавати обов’язки «на
льоту».
 Можна додавати кілька нових
обов’язків одразу.
 Дозволяє мати кілька дрібних
об’єктів, замість одного об’єкта
«на всі випадки життя».
Важко конфігурувати об’єкти, які
загорнуто в декілька обгорток
одночасно.
Велика кількість крихітних
класів.
SLIDESMANIA.C
SLIDESMANIA.C
Стратегія — це поведінковий патерн проектування, який
визначає сімейство схожих алгоритмів і розміщує кожен з них у
власному класі. Після цього алгоритми можна заміняти один на
інший прямо під час виконання програми.
SLIDESMANIA.C
SLIDESMANIA.C
 Гаряча заміна алгоритмів на
льоту.
 Ізолює код і дані алгоритмів від
інших класів.
 Заміна спадкування
делегуванням.
 Реалізує принцип
відкритості/закритості.
Ускладнює програму внаслідок
додаткових класів.
Клієнт повинен знати, в чому
полягає різниця між стратегіями,
щоб вибрати потрібну.
SLIDESMANIA.C
SLIDESMANIA.C
Ланцюжок обов’язків — це поведінковий патерн проектування,
що дає змогу передавати запити послідовно ланцюжком
обробників. Кожен наступний обробник вирішує, чи може він
обробити запит сам і чи варто передавати запит далі
ланцюжком.
SLIDESMANIA.C
SLIDESMANIA.C
 Зменшує залежність між клієнтом
та обробниками.
 Реалізує принцип єдиного
обов’язку.
 Реалізує принцип
відкритості/закритості.
Запит може залишитися ніким не
опрацьованим.
SLIDESMANIA.C
Настав час узагальнити матеріал…
SLIDESMANIA.C
Домашнє
завдання
Завдання 1.
Розробка системи керування різними типами транспортних засобів вантажоперевезення.
1. Абстрактна фабрика (Abstract Factory) може бути використана для створення різних
типів фабрик, які створюють об'єкти конкретних типів транспортних засобів (наприклад,
автомобілів, вантажівок, морських суден тощо) в залежності від потреб користувача. Кожна
фабрика міститиме методи для створення конкретних об'єктів транспортних засобів.
2. Фабрика (Factory) може бути використана для створення об'єктів різних типів
причепів для вантажівок, залежно від їхньої ваги та розміру. Кожен тип причепа буде мати свою
власну фабрику, що створює конкретний причіп з необхідними характеристиками.
3. Декоратор (Decorator) може бути використаний для додавання додаткових функцій
до транспортних засобів. Наприклад, можливість додати систему GPS-навігації, систему контролю
витрат палива, систему відеоспостереження та інші функції.
Отже, завдання полягатиме у розробці системи керування транспортними засобами
вантажоперевезення, яка буде використовувати паттерни Abstract Factory, Factory та Decorator
для створення та налаштування різних типів транспортних засобів та їхніх додаткових функцій.
Список літератури:
1. Паттерни проєктування (Refactoring guru)
2. Python Design Patterns Tutorial
SLIDESMANIA.C
Створити програму для відтворення музики.
Користувач може відтворювати різні формати файлів,
такі як mp3, wav або flac. Кожен формат файлу
повинен мати свій власний спосіб відтворення.

More Related Content

Similar to Patterns.pptx

7_1010.pptx
7_1010.pptx7_1010.pptx
7_1010.pptx
ssuser53d8f2
 
Вибір і експлуатація систем керування автоматизованим виробництвом
Вибір і експлуатація систем керування автоматизованим виробництвомВибір і експлуатація систем керування автоматизованим виробництвом
Вибір і експлуатація систем керування автоматизованим виробництвом
irko514
 
основи програмування 1
основи програмування  1основи програмування  1
основи програмування 1
CDN_IF
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. Howto
GlobalLogic Ukraine
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.js
Pavlo Iuriichuk
 
Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаHRdepartment
 
Розгортання середовища для Camunda
Розгортання середовища для CamundaРозгортання середовища для Camunda
Розгортання середовища для Camunda
Святослав Надозирний
 
Less4
Less4Less4
лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаються
cit-cit
 
презентація поняття події
презентація   поняття подіїпрезентація   поняття події
презентація поняття події
Olga Sokolik
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...
Fwdays
 
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
DevOps_Fest
 
informatyka_9_klas_ryvkind_2022.pdf
informatyka_9_klas_ryvkind_2022.pdfinformatyka_9_klas_ryvkind_2022.pdf
informatyka_9_klas_ryvkind_2022.pdf
ssuser59c0a2
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii Nasinnyk
Fwdays
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17
Andrii Hladkyi
 
Aspnet core
Aspnet coreAspnet core
Aspnet core
eleksdev
 
Урок 28 6 клас
Урок 28 6 класУрок 28 6 клас
Урок 28 6 клас
Andrey Podgayko
 

Similar to Patterns.pptx (20)

7_1010.pptx
7_1010.pptx7_1010.pptx
7_1010.pptx
 
Вибір і експлуатація систем керування автоматизованим виробництвом
Вибір і експлуатація систем керування автоматизованим виробництвомВибір і експлуатація систем керування автоматизованим виробництвом
Вибір і експлуатація систем керування автоматизованим виробництвом
 
основи програмування 1
основи програмування  1основи програмування  1
основи програмування 1
 
23
2323
23
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. Howto
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.js
 
Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій Галушка
 
ASP.Net MVC
ASP.Net MVCASP.Net MVC
ASP.Net MVC
 
Розгортання середовища для Camunda
Розгортання середовища для CamundaРозгортання середовища для Camunda
Розгортання середовища для Camunda
 
Less4
Less4Less4
Less4
 
лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаються
 
презентація поняття події
презентація   поняття подіїпрезентація   поняття події
презентація поняття події
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...
 
208,23.pptx
208,23.pptx208,23.pptx
208,23.pptx
 
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
DevOps Fest 2020. Володимир Мельник. TuchaKube - перша українська DevOps/Host...
 
informatyka_9_klas_ryvkind_2022.pdf
informatyka_9_klas_ryvkind_2022.pdfinformatyka_9_klas_ryvkind_2022.pdf
informatyka_9_klas_ryvkind_2022.pdf
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii Nasinnyk
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17
 
Aspnet core
Aspnet coreAspnet core
Aspnet core
 
Урок 28 6 клас
Урок 28 6 класУрок 28 6 клас
Урок 28 6 клас
 

Patterns.pptx

  • 2. SLIDESMANIA.C Патерн проектування — це типовий спосіб вирішення певної проблеми, що часто зустрічається при проектуванні архітектури програм.
  • 3. SLIDESMANIA.C SLIDESMANIA.C Перевірені рішення. Ви витрачаєте менше часу, використовуючи готові рішення, замість повторного винаходу велосипеда. До деяких рішень ви могли б дійти й самотужки, але багато які з них стануть для вас відкриттям. Стандартизація коду. Ви робите менше прорахунків при проектуванні, використовуючи типові уніфіковані рішення, оскільки всі приховані в них проблеми вже давно знайдено. Загальний словник програмістів. Ви вимовляєте назву патерна, замість того, щоб годину пояснювати іншим програмістам, який крутий дизайн ви придумали і які класи для цього потрібні. Навіщо знати паттерни?
  • 4. SLIDESMANIA.C Типи паттернів ● Породжуючі патерни піклуються про гнучке створення об’єктів без внесення в програму зайвих залежностей. ● Структурні патерни показують різні способи побудови зв’язків між об’єктами. ● Поведінкові патерни піклуються про ефективну комунікацію між
  • 6. SLIDESMANIA.C SLIDESMANIA.C Фабричний метод — це породжувальний патерн проектування, який визначає загальний інтерфейс для створення об’єктів у суперкласі, дозволяючи підкласам змінювати тип створюваних об’єктів.
  • 7. SLIDESMANIA.C SLIDESMANIA.C  Позбавляє клас від прив’язки до конкретних класів продуктів.  Виділяє код виробництва продуктів в одне місце, спрощуючи підтримку коду.  Спрощує додавання нових продуктів до програми.  Реалізує принцип відкритості/закритості. Може призвести до створення великих паралельних ієрархій класів, адже для кожного класу продукту потрібно створити власний підклас творця.
  • 8. SLIDESMANIA.C SLIDESMANIA.C Абстрактна фабрика — це породжувальний патерн проектування, що дає змогу створювати сімейства пов’язаних об’єктів, не прив’язуючись до конкретних класів створюваних об’єктів.
  • 9. SLIDESMANIA.C SLIDESMANIA.C  Гарантує поєднання створюваних продуктів.  Звільняє клієнтський код від прив’язки до конкретних класів продукту.  Виділяє код виробництва продуктів в одне місце, спрощуючи підтримку коду.  Спрощує додавання нових продуктів до програми.  Реалізує принцип відкритості/закритості. Ускладнює код програми внаслідок введення великої кількості додаткових класів. Вимагає наявності всіх типів продукту в кожній варіації.
  • 10. SLIDESMANIA.C SLIDESMANIA.C Декоратор — це структурний патерн проектування, що дає змогу динамічно додавати об’єктам нову функціональність, загортаючи їх у корисні «обгортки».
  • 11. SLIDESMANIA.C SLIDESMANIA.C  Більша гнучкість, ніж у спадкування.  Дозволяє додавати обов’язки «на льоту».  Можна додавати кілька нових обов’язків одразу.  Дозволяє мати кілька дрібних об’єктів, замість одного об’єкта «на всі випадки життя». Важко конфігурувати об’єкти, які загорнуто в декілька обгорток одночасно. Велика кількість крихітних класів.
  • 12. SLIDESMANIA.C SLIDESMANIA.C Стратегія — це поведінковий патерн проектування, який визначає сімейство схожих алгоритмів і розміщує кожен з них у власному класі. Після цього алгоритми можна заміняти один на інший прямо під час виконання програми.
  • 13. SLIDESMANIA.C SLIDESMANIA.C  Гаряча заміна алгоритмів на льоту.  Ізолює код і дані алгоритмів від інших класів.  Заміна спадкування делегуванням.  Реалізує принцип відкритості/закритості. Ускладнює програму внаслідок додаткових класів. Клієнт повинен знати, в чому полягає різниця між стратегіями, щоб вибрати потрібну.
  • 14. SLIDESMANIA.C SLIDESMANIA.C Ланцюжок обов’язків — це поведінковий патерн проектування, що дає змогу передавати запити послідовно ланцюжком обробників. Кожен наступний обробник вирішує, чи може він обробити запит сам і чи варто передавати запит далі ланцюжком.
  • 15. SLIDESMANIA.C SLIDESMANIA.C  Зменшує залежність між клієнтом та обробниками.  Реалізує принцип єдиного обов’язку.  Реалізує принцип відкритості/закритості. Запит може залишитися ніким не опрацьованим.
  • 17. SLIDESMANIA.C Домашнє завдання Завдання 1. Розробка системи керування різними типами транспортних засобів вантажоперевезення. 1. Абстрактна фабрика (Abstract Factory) може бути використана для створення різних типів фабрик, які створюють об'єкти конкретних типів транспортних засобів (наприклад, автомобілів, вантажівок, морських суден тощо) в залежності від потреб користувача. Кожна фабрика міститиме методи для створення конкретних об'єктів транспортних засобів. 2. Фабрика (Factory) може бути використана для створення об'єктів різних типів причепів для вантажівок, залежно від їхньої ваги та розміру. Кожен тип причепа буде мати свою власну фабрику, що створює конкретний причіп з необхідними характеристиками. 3. Декоратор (Decorator) може бути використаний для додавання додаткових функцій до транспортних засобів. Наприклад, можливість додати систему GPS-навігації, систему контролю витрат палива, систему відеоспостереження та інші функції. Отже, завдання полягатиме у розробці системи керування транспортними засобами вантажоперевезення, яка буде використовувати паттерни Abstract Factory, Factory та Decorator для створення та налаштування різних типів транспортних засобів та їхніх додаткових функцій. Список літератури: 1. Паттерни проєктування (Refactoring guru) 2. Python Design Patterns Tutorial
  • 18. SLIDESMANIA.C Створити програму для відтворення музики. Користувач може відтворювати різні формати файлів, такі як mp3, wav або flac. Кожен формат файлу повинен мати свій власний спосіб відтворення.