Стратегия (шаблон проектирования): различия между версиями
[непроверенная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Нет описания правки |
Histscotl (обсуждение | вклад) отмена правки 107156763 участника 94.180.160.189 (обс.) вандализм Метка: отмена |
||
Строка 16:
}}
'''Стратегия'''
== Основные характеристики ==
Строка 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 определяет семейство алгоритмов.
* Это позволяет отказаться от использования переключателей и/или условных операторов.
* Вызов всех алгоритмов должен
=== Реализация ===
|