Стратегия (шаблон проектирования): различия между версиями
[непроверенная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
DILIN (обсуждение | вклад) м →Источники информации: категоризация |
Нет описания правки |
||
Строка 16:
}}
'''Стратегия''' енять выбранный алгоритм независимо от [[Объект (программирование)|объектов]]-клиентов, которые его используют.({{lang-en|Strategy}}) — [[Поведенческие шаблоны проектирования|поведенческий]] [[шаблон проектирования]], предназначенный для определения
== Основные характеристики ==
Строка 22:
=== Задача ===
По типу клиента (или по типу обрабатываемых данных) выбрать подходящий алгоритм, который следует применить. Если используется правило, которое не
=== Мотивы ===
* Программа должна обеспечивать различные варианты алгоритма или поведения
* Нужно изменять поведение
* Необходимо изменять поведение объектов на стадии выполнения
* Введение интерфейса позволяет классам-клиентам ничего не знать о классах, реализующих этот интерфейс и
=== Способ решения ===
Строка 38:
* [[Класс (программирование)|Класс]] <code>''Strategy''</code> определяет, как будут использоваться различные алгоритмы.
*
* Класс <code>Context</code> использует конкретные классы <code>ConcreteStrategy</code> посредством ссылки на конкретный тип [[Абстрактный класс|абстрактного класса]] <code>''Strategy''</code>. Классы <code>''Strategy''</code> и <code>Context</code> взаимодействуют с целью реализации выбранного алгоритма (в некоторых случаях классу <code>''Strategy''</code> требуется посылать запросы классу <code>Context</code>). Класс <code>Context</code> пересылает классу <code>''Strategy''</code> запрос, поступивший от его класса-клиента.
Строка 45:
* Шаблон Strategy определяет семейство алгоритмов.
* Это позволяет отказаться от использования переключателей и/или условных операторов.
* Вызов всех алгоритмов должен
=== Реализация ===
|