Page 81 - 4190
P. 81
Рисунок 7.12 - UML-діаграма класів патерну State
Патерн Strategy
Патерн Strategy (Стратегія) – його суть полягає у тому, щоб
створити декілька схем поведінки для одного об'єкта та винести в
окремий клас. Шаблон Стратегія(Strategy) дозволяє міняти вибраний
алгоритм незалежно від об'єктів-клієнтів, які його використовують.
Клас, який використовує алгоритм (Context), включає абстракт-
ний клас (Strategy), що володіє абстрактним методом, визначальним
спосіб виклику алгоритму. Кожен похідний клас реалізує один необ-
хідний варіант алгоритму.
Архітектура Microsoft WDF заснована на цьому шаблоні. У кож-
ного об'єкта "драйвер" і "пристрій" є незмінна частина, вшита в сис-
тему, в якій реєструється змінна частина (стратегія), написана в конк-
ретній реалізації. Змінна частина може бути і зовсім порожній, що
дасть нічого не робить драйвер, але при цьому здатний брати участь у
PnP і управління живленням.
Бібліотека ATL містить у собі набір класів threading model, які є
стратегіями (різними реалізаціями Lock / Unlock, які потім викорис-
товуються основними класами системи). При цьому в цих стратегіях
використовується статичний поліморфізм через параметр шаблону, а
не динамічний поліморфізм через віртуальні методи.
UML-діаграма класів патерну Strategy зображена на рисунку 7.13.
81