Page 78 - 4190
P. 78

Патерн Chain of Responsibility
                  Патерн  Chain  of  Responsibility  (Ланцюжок  відповідальностей)  –
            шаблон об'єктно-орієнтованого дизайну у програмуванні.
                  В об'єктно-орієнтованому дизайні, шаблон «ланцюжок відповіда-

            льностей» є шаблоном, який складається з об'єктів «команда» і серії
            об'єктів-виконавців. Кожен об'єкт-виконавець має логіку, що описує
            типи об'єктів «команда», які він може обробляти, а також як передати

            далі ланцюжком ті об'єкти-команди, що він не може обробляти. Крім
            того існує механізм для додавання нових, призначених для обробки
            об'єктів у кінець ланцюжка.
                  У варіаціях стандартного ланцюжка відповідальностей, деякі об-

            робники можуть бути в ролі диспетчерів, які здатні відсилати коман-
            ди  в  різні  напрямки,  формуючи  Дерево  відповідальності.  У  деяких
            випадках це можна організувати рекурсивно, коли об'єкт який оброб-

            люється, викликає об'єкт вищого рівня обробки з командою, що нама-
            гається вирішити меншу частину проблеми; у цьому випадку рекурсія
            продовжує виконуватися, поки команда не виконається, або поки де-

            рево повністю не буде оброблене. XML-інтерпретатор (проаналізова-
            ний, але який ще не було поставлено на виконання) може бути хоро-
            шим прикладом.

                  Цей шаблон застосовує ідею слабкого зв'язку, який розглядається
            як програмування у найкращих практиках.
                  Шаблон рекомендований для використання в умовах:
                  1. У розроблюваній системі є група об'єктів, які можуть обробля-

            ти повідомлення певного типу.
                  2. Всі повідомлення повинні бути оброблені хоча б одним об'єк-
            том системи.

                  3. Повідомлення в системі обробляються за схемою «обробив сам
            або передай іншому», тобто одні повідомлення обробляються на тому
            рівні, де вони отримані, а інші пересилаються об'єктам іншого рівня.
                  UML-діаграма  класів  патерну  Chain  of  Responsibility  зображена

            на рисунку 7.10.
                  Патерн Observer (Спостерігач) – визначає залежність типу «один
            до багатьох» між об'єктами таким чином, що при зміні стану одного

            об'єкта всіх залежних від нього сповіщають про цю подію.









                                                              78
   73   74   75   76   77   78   79   80   81   82   83