Тема: Хорошее MVC
Показать сообщение отдельно
Старый 30.09.2013, 01:12
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 4  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Примерно так.
Контроллер инитит модель и вью.
Вью подписывается на модель.
Контроллер подписывается на вью.
Когда из вью что-то прилетает в контроллер - он может дернуть модель и что-то в ней поменять. А модель в свою очередь собщит об изменении наружу.
Так что всё грубо говоря верно, только кода мало, думаю когда будет больше - появятся еще вопросы.

Вот мои комментарии к коду:
просто принимать что-то в модель и просто диспатчить наружу смысла нету.
По хорошему в этой функци должны происходить какие-то действия, которые меняют модель.
А модель просто диспатчит событие CHANGE без данных. Данные в ней доступны, и кому надо сможет их получить, когда узнает что что-то изменилось.

Т.е. именно эту ситуацию лучше было решить без контроллера вообще.
В модели лежит словарь:
Код AS3:
{ 0:0xF5F5D6, 1:0xDBF5D6}
А вью при клике просто лезет в модель и смотрит нужный цвет.

//==========================

Второй вариант.

Так как сделал ты. Но в модели есть переменная : currentColor
И в методе в котором у тебя свитч и диспатч пачки событий наружу - просто установка значения в эту переменную, и диспатч ОДНОГО события CHANGE вконце.

Вью получает событие, и рисует model.currentColor

//====================

Короче идея в том что в модели не только логика. Но и данные.
Т.е. логика которая не меняет данных - модели не очень нужна. Хотя туда можно добавить какие-то методы типа:
Код AS3:
function getCurrentColorByButtonIndex(id:int):uint //(который по сути геттер, и дергается он не из контроллера, а из вью)
__________________
Кто к нам с чем для чего - тот у нас того от того.