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. Кожен формат файлу
повинен мати свій власний спосіб відтворення.

Patterns.pptx

  • 1.
  • 2.
    SLIDESMANIA.C Патерн проектування —це типовий спосіб вирішення певної проблеми, що часто зустрічається при проектуванні архітектури програм.
  • 3.
    SLIDESMANIA.C SLIDESMANIA.C Перевірені рішення. Вивитрачаєте менше часу, використовуючи готові рішення, замість повторного винаходу велосипеда. До деяких рішень ви могли б дійти й самотужки, але багато які з них стануть для вас відкриттям. Стандартизація коду. Ви робите менше прорахунків при проектуванні, використовуючи типові уніфіковані рішення, оскільки всі приховані в них проблеми вже давно знайдено. Загальний словник програмістів. Ви вимовляєте назву патерна, замість того, щоб годину пояснювати іншим програмістам, який крутий дизайн ви придумали і які класи для цього потрібні. Навіщо знати паттерни?
  • 4.
    SLIDESMANIA.C Типи паттернів ● Породжуючіпатерни піклуються про гнучке створення об’єктів без внесення в програму зайвих залежностей. ● Структурні патерни показують різні способи побудови зв’язків між об’єктами. ● Поведінкові патерни піклуються про ефективну комунікацію між
  • 5.
  • 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  Зменшує залежністьміж клієнтом та обробниками.  Реалізує принцип єдиного обов’язку.  Реалізує принцип відкритості/закритості. Запит може залишитися ніким не опрацьованим.
  • 16.
  • 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. Кожен формат файлу повинен мати свій власний спосіб відтворення.