Аналогія
Припустимо, у графічному редакторі ви вибрали інструмент «Пензель». Вона змінює свою поведінку залежно від налаштування кольору: тобто малює лінію вибраного кольору.
Припустимо, у графічному редакторі ви вибрали інструмент «Пензель». Вона змінює свою поведінку залежно від налаштування кольору: тобто малює лінію вибраного кольору.
Візьмемо приклад із пухирцевим сортуванням. Ми її реалізували, але зі зростанням обсягів даних сортування почало виконуватися дуже повільно. Тоді ми зробили швидке сортування (Quick sort). Алгоритм працює швидше на великих обсягах, але на маленьких він дуже повільний. Тоді ми реалізували стратегію, за якої для невеликих обсягів даних використовується бульбашкове сортування, а для великих – швидке.
Туристи зібралися до Дубаї. Спочатку їм потрібен спосіб потрапити туди (віза). Після прибуття вони відвідуватимуть будь-яку частину міста, не питаючи дозволу, ходити де заманеться. Просто скажіть їм про якесь місце — і туристи можуть там побувати. Шаблон відвідувачів допомагає додавати місця для відвідування.
Хороший приклад: люди, які шукають роботу, підписуються на публікації на сайтах вакансій та отримують повідомлення, коли з’являються вакансії, які підходять за параметрами.
Як приклад можна навести калькулятор (“творець”), у якого будь-яка остання виконана операція зберігається в пам’яті (“хранитель”), щоб ви могли знову викликати її за допомогою якихось кнопок (“опікун”).
Коли ви розмовляєте з кимось по мобільному, то між вами та співрозмовником знаходиться мобільний оператор. Тобто сигнал передається через нього, а не безпосередньо. У цьому прикладі оператор — посередник.
Гарний приклад – радіоприймач. Ви починаєте з якоїсь радіостанції, а потім переміщаєтеся станціями вперед/назад. Тобто пристрій надає інтерфейс для ітерування каналами.
Ви прийшли до ресторану. Ви (Client) просите офіціанта (Invoker) принести блюда (Command). Офіціант перенаправляє запит шеф-кухареві (Receiver), який знає, що і як готувати. Інший приклад: ви (Client) включаєте (Command) телевізор (Receiver) за допомогою пульта (Invoker).
Допустимо, для вашого банківського рахунку є три способи оплати (A, B і C). Кожен має на увазі різні доступні суми грошей: A – 100 доларів, B – 300, C – 1000. Пріоритетність способів при оплаті: А, потім В, потім С. Ви намагаєтеся купити щось за 210 доларів. На підставі «ланцюжка відповідальності» система спробує оплатити способом А. Якщо грошей вистачає, то оплата проходить, а ланцюжок переривається. Якщо грошей не вистачає – то система переходить до способу, і т.д.