Page 67 - 4190
P. 67

ЛЕКЦІЯ 7


                    КЛАСИФІКАЦІЯ ПАТЕРНІВ ПОВЕДІНКИ ДЛЯ
               ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ





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

                  Коротко розглянемо особливості патернів (шаблонів) поведінки.
                  Патерн Iterator
                  Патерн Iterator (Ітератор) – надає спосіб послідовного доступу

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

            ступу до його елементів без розкриття своєї внутрішньої структури.
            Більше того, іноді треба перебирати елементи списку різними спосо-
            бами, залежно від конкретного завдання. Іноді необхідно мати декі-

            лька активних обходів одного списку одночасно. Було б добре також
            мати  єдиний  інтерфейс  для  обходу  різних  типів  складених  об'єктів
            (тобто поліморфна ітерація).
                  Патерн  Iterator  дозволяє  все  це  робити.  Ключова  ідея  полягає  в

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

                  Абстракція Iterator має особливе значення для технології, що на-
            зивається "узагальнене програмування". Ця технологія чітко розділяє
            такі поняття як "алгоритм" і "структура даних". Мотивуючі чинники:
            сприяння компонентному розробленню, підвищення продуктивності і

            зниження витрат на управління.
                  Розглянемо  приклад.  Якщо  ви  хочете  одночасно  підтримувати
            чотири види структур даних (масив, бінарне дерево, зв’язаний список

            та  хэш-таблиця)  і  три  алгоритми  (сортування,  пошук  та  злиття),  то
            традиційний підхід потребуватиме 12 варіантів конфігурацій (чотири
            рази по три), тоді як узагальнене програмування вимагає лише 7 (чо-

            тири плюс три).
                  Для маніпулювання колекцією клієнт використовує відкритий ін-
            терфейс класу Collection. Проте доступ до елементів колекції інкап-

                                                              67
   62   63   64   65   66   67   68   69   70   71   72