Показать сообщение отдельно
Старый 24.11.2018, 14:38
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 5  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
Цитата:
Сообщение от Rzer Посмотреть сообщение
Всё равно тебе придётся узнать в каком режиме находится стейт.
Вовсе нет. Как отметил СлаваRa, суть самого паттерна "Состояние" в том и состоит, что проверять ничего не нужно. Ты просто записываешь в переменную _state того или иного наследника базового класса (или интерфейса) состояния и переопределяешь в нём методы. Получается, что вместо doSomething(), ты запускаешь _state.doSometing(). По факту запустится метод из актуального на данный момент состояния.

Цитата:
Но я не вижу принципиально разницы, если все твои последующие стейты ты будешь наследовать от ChStateNormal или ChStateBattle
Пока ничего не придумал лучше, чем создать 4 варианта наследников: ChStateBattlePlayer, chStateBattleNPC и аналогично для "обычного" состояния.
__________________
Не сломано - не чини!