русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Призначення патерну Strategy


Дата додавання: 2014-10-07; переглядів: 842.


 

Існують системи, поведінка яких може визначатися згідно одному алгоритму з деякого сімейства. Всі алгоритми цього сімейства є спорідненими: призначені для вирішення спільних завдань, мають однаковий інтерфейс для використання і відрізняються тільки реалізацією (поведінкою). Користувач, попередньо налаштувавши програму на потрібний алгоритм (вибравши стратегію), отримує очікуваний результат. Як приклад, - додаток, призначений для компресії файлів використовує один з доступних алгоритмів: zip, arj або rar.

Об'єктно-орієнтований дизайн такої програми може бути побудований на ідеї використання поліморфізму. В результаті отримуємо набір родинних класів із загальним інтерфейсом і різними реалізаціями алгоритмів.

 

 

UML-діаграма класів. Програма стиснення файлів. Стандартний підхід на основі поліморфізму

 

1. Представленому підходу властиві такі недоліки:

2. Реалізація алгоритму жорстко прив'язана до його підкласу, що ускладнює підтримку і розширення такої системи.

 

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

Застосування патерну Strategy дозволяє усунути вказані недоліки.

 


<== попередня лекція | наступна лекція ==>
Реалізація патерну Observer: до та після | Опис патерну Strategy


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн