Шаблон проектирования стратегии против шаблона проектирования состояния

Я читал эту ссылку о шаблоне состояния. Это похоже на шаблон стратегии? Какова точная разница между этими двумя шаблонами?


person Krishna    schedule 08.05.2012    source источник
comment
dofactory.com/Patterns/Patterns.aspx   -  person MilkyWayJoe    schedule 08.05.2012


Ответы (4)


Разница между состоянием и стратегией заключается в намерении. Со Стратегией выбор алгоритма достаточно стабилен. При использовании состояния изменение состояния объекта «контекст» заставляет его выбирать из его «палитры» объектов стратегии.

См. http://sourcemaking.com/design_patterns/state.

person Benjamin Schug    schedule 08.05.2012

Шаблон стратегии очень похож на шаблон состояния. Одно из отличий состоит в том, что контекст содержит состояние как переменную экземпляра, и может быть несколько задач, реализация которых может зависеть от состояния, тогда как в шаблоне стратегии стратегия передается в качестве аргумента методу, а объект контекста не имеет переменной для ее хранения. .

для получения более подробной информации см. Шаблон разработки стратегии в учебном примере Java< /а>

person Nomade    schedule 26.04.2014

Я думаю, что одно из основных отличий заключается в том, что:

-В шаблоне State мы передаем сам контекст в качестве параметра методу конкретного класса состояния, который нам нужно присвоить контексту, и он делает две вещи: сначала он присваивает себя отправленному контексту. , во-вторых, свою роль он выполняет.

- В шаблоне Strategy мы передаем стратегию в контекст при ее первом создании, поэтому она остается неизменной для всей программы, если только мы не назначаем ту же переменную новому контексту (указателю) в память, используя «новую», и назначит ей новую стратегию, а через некоторое время сборщик мусора удалит старый контекст с назначенной ему стратегией.

Точнее говоря, Стратегия фиксирована для одного контекста, и однажды назначенная, не может быть изменена, даже если контекст не имеет установщика стратегии. Но для State многие состояния могут быть назначены одному и тому же контексту одно за другим, так как у контекста есть установщик для состояний.

Я надеюсь, что это полезно.

person Ahmed El-Gamal    schedule 19.01.2016

В шаблоне состояния обычно действие состояния вызывает изменение состояния; в шаблоне стратегии действие стратегии не вызывает изменения стратегии. Другими словами, изменение состояния заключается в самом состоянии; изменение стратегии заключается во внешних условиях.

person user8548370    schedule 01.09.2017