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

Представленому підходу властиві такі недоліки:
- Реалізація алгоритму жорстко прив'язана до його підкласу, що ускладнює підтримку та розширення такої системи.
- Система, побудована з урахуванням успадкування, є статичною. Замінити один алгоритм на інший під час виконання програми вже неможливо.
Застосування патерну Strategy дозволяє усунути зазначені недоліки.
Опис патерну Strategy

Структура патерну Strategy
UML-діаграма класів патерну Strategy

Реалізація патерну Strategy
Наведемо реалізацію програми для стиснення файлів, спроектованого із застосуванням патерну Strategy.