Показать сообщение отдельно
Старый 02.11.2011, 01:12
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 7  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Стратегия в контроллере ничего не даст - это точно.

Что делать?
Ни на что не претендую, но раз в _центральном_ контроллере возникает сумасшедший код - может _децентрализовать_ систему?
Т.е. позволить объектам самим решать, что делать. Тогда при добавлении нового элемента его поведение можно будет описывать прямо в нем.

А когда заканчивается время - переключать у всех объектов поведение в режим "паника" с помощью вашей любимой стратегии, например, но здесь это не суть.

Здравый смысл подсказывает, что если каждый элемент будет _особым_ образом взаимодействовать с каждым - получим комбинаторный взрыв (и не важно будем ли мы городить свитчи в контроллере или свитчи в объекте)
Т.е. надо универсализировать отношения с объектами.
Т.е., например у стены, пустой клетки, реки, кольев - сделать 3 характеристики: проходимость, прочность, наносимый вред.
Берем пакмана, у него слабая пробивная сила - значит он не пройдет через стену с проходимостью 1,
но пройдет через объект с проходимостью 2
Возьмем противника - он тоже не пройдет через препятствие (все! нам не надо знать стена это или еще что-то) с проходимостью больше 1
Возьмем суперпротивника - у него хорошая проходимость и он пройдет и через препятствие с проходимостью 1
Т.е. общие свойства у групп объектов выделить и работать с ними, абстрагироваться от конкретных объектов.

---------------
Стратегия (возможно помесь цепочкой обязанностей, мне для эмуляции поведения толпы человечков с разными обязанностями стратегии хватало) потребуется, когда накопится сумасшедший код в самом объекте
т.е. когда у него появятся неявные состояния "искать противника"-"прятаться"-"есть", в каждом из которых он будет по-своему двигаться на каждом такте и взаимодействовать с абстрактрыми препятствиями или абстрактными противниками.
Но, если состояния 2 - можно и свитчом обойтись. А если Вы не представляете как здесь выделить состояния и реализовать их свитчом - паттерн "стратегия" противопоказан.


Последний раз редактировалось expl; 02.11.2011 в 01:23.