Разработка стратегии шаблон против государственного образца дизайн
Я читал через эту ссылку о паттерне состояния. Похоже ли это на стратегию паттерна? Какова точная разница между этими двумя паттернами?
4 ответа:
Разница между государством и стратегией заключается в намерении. Со стратегией выбор алгоритма достаточно стабилен. В случае состояния изменение состояния объекта "контекст" заставляет его выбирать из своей "палитры" объекты стратегии.
Паттерн стратегии очень похож на паттерн состояния. Один из отличие состоит в том, что контекст содержит состояние в качестве переменной экземпляра и может быть несколько задач, реализация которых может зависеть от государство в то время как в стратегии шаблон стратегии передается в качестве аргумента к методу и контексту объект не имеет никакой переменной для хранения оно.Для получения более подробной информации смотрите шаблон разработки стратегии в примере Java tutorial
Я думаю, что одно из главных отличий состоит в том, что:
- в шаблоне State мы передаем сам контекст в качестве параметра методу класса State concrete, который нам нужно назначить контексту, и он делает две вещи: во-первых, он присваивает себя переданному контексту, во-вторых, он выполняет свою роль.
- в шаблоне Strategy мы передаем стратегию контексту при ее первом создании, поэтому она остается такой же, как и для всей программы, если только мы не назначим ту же переменную новой контекст (указатель) в памяти использует "new" и назначает ему новую стратегию, а через некоторое время сборщик мусора устранит старый контекст с его назначенной стратегией.
Более четко, Стратегия фиксирована для одного контекста и после назначения она не может быть изменена, даже контекст не имеет задатчика стратегии. Но для состояния многие состояния могут быть назначены одному и тому же контексту одно за другим, поскольку контекст имеет задатчик для состояний.
Я надеюсь, что это так полезный.