Поведінкові шаблони проектування

Вони пов'язані з присвоєнням обов'язків (відповідності) об'єктам. Від структурних шаблонів вони відрізняються тим, що не просто описують структуру, а й окреслюють шаблони передачі даних, забезпечення взаємодії. Тобто поведінкові шаблони дозволяють відповісти на питання «Як реалізувати поведінку у програмному компоненті?»
Поведінкові шаблони проектування

Шаблонний метод

Аналогія Допустимо, ви зібралися будувати будинки. Етапи будуть такими: * Підготовка фундаменту. * Зведення стін. * Настил даху. * Настил перекриттів. Порядок етапів ніколи не змінюється. Ви не настеліть дах до зведення стін - і т. д. Але кожен етап модифікується: стіни, наприклад, можна звести з дерева, цегли або газобетону. Коротко "Шаблонний метод" визначає
1 min read
Поведінкові шаблони проектування

Стан

Аналогія Припустимо, у графічному редакторі ви вибрали інструмент «Пензель». Вона змінює свою поведінку залежно від налаштування кольору: тобто малює лінію вибраного кольору. Коротко Шаблон дозволяє змінювати поведінку класу за зміни стану. Вікіпедія Шаблон "Стан" реалізує машину станів об'єктно орієнтованим способом. Це досягається за допомогою: реалізації кожного стану у вигляді похідного
1 min read
Поведінкові шаблони проектування

Стратегія (Strategy)

Аналогія Візьмемо приклад із пухирцевим сортуванням. Ми її реалізували, але зі зростанням обсягів даних сортування почало виконуватися дуже повільно. Тоді ми зробили швидке сортування (Quick sort). Алгоритм працює швидше на великих обсягах, але на маленьких він дуже повільний. Тоді ми реалізували стратегію, за якої для невеликих обсягів даних використовується бульбашкове
1 min read
Поведінкові шаблони проектування

Відвідувач

Аналогія Туристи зібралися до Дубаї. Спочатку їм потрібен спосіб потрапити туди (віза). Після прибуття вони відвідуватимуть будь-яку частину міста, не питаючи дозволу, ходити де заманеться. Просто скажіть їм про якесь місце — і туристи можуть там побувати. Шаблон відвідувачів допомагає додавати місця для відвідування. Стисло Шаблон «Відвідувач» дозволяє додавати майбутні операції
1 min read
Поведінкові шаблони проектування

Спостерігач (Behavior)

Аналогія Хороший приклад: люди, які шукають роботу, підписуються на публікації на сайтах вакансій та отримують повідомлення, коли з'являються вакансії, які підходять за параметрами. Стисло Шаблон визначає залежність між об'єктами, щоб за зміни стану одного з них його «підлеглі» дізнавалися про це. Вікіпедія У шаблоні «Спостерігач» є об'єкт («суб'єкт»), що веде
1 min read
Поведінкові шаблони проектування

Хранитель

Аналогія Як приклад можна навести калькулятор ("творець"), у якого будь-яка остання виконана операція зберігається в пам'яті ("хранитель"), щоб ви могли знову викликати її за допомогою якихось кнопок ("опікун"). Стисло Шаблон «Зберігач» фіксує та зберігає поточний стан об'єкта, щоб він легко відновлювався. Вікіпедія Шаблон "Зберігач" дозволяє відновлювати об'єкт у його попередньому
1 min read
Поведінкові шаблони проектування

Посередник

Аналогія Коли ви розмовляєте з кимось по мобільному, то між вами та співрозмовником знаходиться мобільний оператор. Тобто сигнал передається через нього, а не безпосередньо. У цьому прикладі оператор — посередник. Стисло Шаблон «Посередник» має на увазі додавання стороннього об'єкта («посередника») для керування взаємодією між двома об'єктами («колегами»). Шаблон допомагає зменшити пов'язаність
1 min read
Поведінкові шаблони проектування

Ітератор

Аналогія Гарний приклад – радіоприймач. Ви починаєте з якоїсь радіостанції, а потім переміщаєтеся станціями вперед/назад. Тобто пристрій надає інтерфейс для ітерування каналами. Стисло Шаблон - це спосіб доступу до елементів об'єкта без розкриття базового представлення. Вікіпедія У цьому шаблоні ітератор використовується для переміщення контейнера та забезпечення доступу до елементів контейнера.
1 min read
Поведінкові шаблони проектування

Команда

Аналогія Ви прийшли до ресторану. Ви (Client) просите офіціанта (Invoker) принести блюда (Command). Офіціант перенаправляє запит шеф-кухареві (Receiver), який знає, що і як готувати. Інший приклад: ви (Client) включаєте (Command) телевізор (Receiver) за допомогою пульта (Invoker). Стисло Шаблон "Команда" дозволяє інкапсулювати дії в об'єкти. Ключова ідея – надати кошти відділення клієнта
1 min read
Поведінкові шаблони проектування

Ланцюжок відповідальності

Аналогія Допустимо, для вашого банківського рахунку є три способи оплати (A, B і C). Кожен має на увазі різні доступні суми грошей: A - 100 доларів, B - 300, C - 1000. Пріоритетність способів при оплаті: А, потім В, потім С. Ви намагаєтеся купити щось за 210 доларів. На підставі
1 min read