Регистрация: Feb 2008
Сообщений: 890
|
1. Можно спорить до бесконечности. Можно даже спорить "контроллер клавиатуры" - это тот, кто жмет на клавиатуру, или это чип, встроенный в клаву и выдающий сигналы (знаете такое выражение "контроллер клавы сгорел" - человек сгорел? о, майн гот)))) Соответственно программный контроллер выдает программные сигналы.
Выключатель (например света) - это контроллер: человек жмет выключатель (дает на вход сигнал состояния тумблера), контроллер делает внутреннее действие (замыкает/размыкает внутренний участок цепи) и на выходе мы имеем результат "замкнут/разомкнут". И, заметьте, никем он не управляет. Если к нему подключить лампочку, или группу лампочек (навесить слушатель), то благодаря состояниям контроллера на выходе, они будут загораться/тухнуть. С таким же успехом можно подключить радио к тому же переключателю. При этом наш переключатель абсолютно никем не управляет целенаправленно - т.е. он не был создан только включать/выключать лампочки - он был создан давать на выходе состояние (отсылать событие), чтобы все, кому надо, им пользовались. Вы хотите сказать, что человек - это контроллер выключателя? Я б обиделся за человека)))
2. Я не мешаю в одной куче проверку состояний объекта в мире и команды, которые объект должен получить. У меня подход такой: существует пул ф-ий, который обрабатывается в слушателе смены кадров или событий таймера. На основе этого пула персоонаж выполняет действия. Если команда дана, она должна быть обработана - пусть это делает отдельный поведенческий класс, который уже решает, что добавить в пул. Что это дает? Интерактивный объект не зависит ни от чего - он вещь в себе. На него вешается любой поведенческий класс и любой контроллер. И никто друг о друге ничего не знает и друг на друга не завязан.
Единственное, что я сейчас рассматриваю вариант не вешать отдельное событие на каждое действо контроллера, а отсылать общее событие "changed" в результате которого брать пул текущих состояний - слушатель один, смысл тот же.
P.S. забудьте определения из MVC - окружающий мир и, в частности, ООП на MVC не заканчиваются.
__________________
скриптограф
Последний раз редактировалось orcpochta; 01.05.2010 в 14:01.
|