Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.06.2011, 23:57
Max360 вне форума Посмотреть профиль Отправить личное сообщение для Max360 Найти все сообщения от Max360
  № 1  
Ответить с цитированием
Max360
[+3 17.04.11]

Регистрация: Mar 2011
Сообщений: 168
По умолчанию И снова MVC

Читал статейки, на их примерах все прекрасно. А у меня все через одно место ))) Вообщем, вопрос по поводу Вьюшки. Как я понимаю доступ к сцене (или сценам) должна иметь только Вьюшка, тогда такой вопрос: Вьюшка слушает событие нажатие клавиши движения, передает его в Контроллер, Контроллер решает как изменить модель, и меняет ее координаты (т.е. мой мувик уже переместился). Модель издает событие, что она изменилась, которое слушает Вьюшка. Вроде все прекрасно, но ... Что должна сделать Вьюшка после того как она узнала, что Модель изменилась??? Ведь и без нее все прекрасно работает! Помогите пожалуйста, очень запустался в этом паттерне.

Старый 03.06.2011, 01:59
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от Max360 Посмотреть сообщение
(т.е. мой мувик уже переместился)
Ничего подобного. И как только ты это осознаешь — сразу поймешь, что должна делать вьюшка, когда узнает, что в модели для нее уже уготовано новое место.
__________________
Поймай яблоко 2!

Старый 03.06.2011, 11:46
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 3  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Читайте http://www.flasher.ru/forum/showthread.php?t=138349 Это в разделе "Статьи". Незачем очередной MVC флуд разводить. Там все разжевано, все вопросы заданы, и все ответы на них получены. Главное прочитать.
__________________
#flasher@irc.trg.ru:6667

Старый 04.06.2011, 00:42
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Там все разжевано, все вопросы заданы, и все ответы на них получены
Они были бы получены если бы была одна концепция MVC на весь мир. А вариаций MVC более 9000 и каждый адепт считает что его MVC самое правильное (МVC , MVP, МVVМ). Причем внутри подмножества MVC тоже много вариантов разделения обязанностей, и в MVP тоже, причем некоторые вариации непонятно к какому подмножеству больше относятся.

Попробую ответить на вопрос из следующей концепции:
1. Модель ни о ком больше не знает, модель содержит только данные и не содержит логики, максимум что делает модель - посылает события, когда кто-то меняет ее данные.
2. Контроллер имеет ссылку на модель. Хотя чаще всего говорят, что контроллер может иметь ссылку на вьюшку - здесь мы от этого откажемся, чтобы не запутаться вконец, а тупо позволим вьюшке ссылаться на контроллер
3. Вьюшка имеет ссылку на контроллер и на модель

Как должна выглядеть цепочка действий описанная в топике:
Вьюшка отловила нажатие клавиши - вызвала метод контроллера - контроллер поменял координаты модели - модель послала событие - вьюшка прослушала событие и изменила координаты.

Зачем нам модель? Почему сразу в контроллере вьюшку не поменять?
- А вьюшек для одной и той же сущности может быть несколько (для машинки - отображение в изометрии, отображение на уменьшенной карте, отображение параметров в диалоговом окне - и все на одной модельке) - как бы контроллер выглядел, если бы ему пришлось одни и те же данные по всему этому хозяйству распихивать?

Зачем нам вьюшка?
- Ну тут все понятно

Зачем нам контроллер - давайте запихаем логику в модель или во вьюшку
(это, ИМХО более тонкий момент и часто так и делают и это оправдано)

1. Если мы запихнем логику во вьюшку - это может привести к росту копипасты
Например, перемещение персонажа при указании цели на измометрической и на уменьшенной карте - если мы пишем это во вьюшке - и там и там будет один и тот же код.

2. Если мы запихнем логику в модель - мы потеряем гибкость. Например в режиме строительства при клике на карте - появляется диалоговое окно с выбором здания и далее начинается строительство. А в нормальном режиме - при клике на здании, с него например, собираются деньги
Это 2 совершенно разных действия с вроде как одной моделью - зданием. И если все новые действия пихать в модель, то мало какой супер-мозг сможет это поддерживать.

Вот вобщем-то и все.

P.S. Встречался с альтернативной концепцией, которая, однако, успешно работала, правда приводила в ужас своей "смелостью" и были некоторые проблемы, решаемые только затычками
Собственно вот она:
1. Сращиваем модель с вьюхой намертво (т.к. вьюх много - выбираем приоритетную - отображение в изометрии и записываем все данные прямо на ней с прямым изменением отображения)
2. Остальные вьюхи используют это ViewModel аки нормальную модель.
3. Контроллер, небольшая часть которого размазана по "чистым" вьюхам (но это и в true-MVC случается), частично представленный в виде отдельных синглтонов, который используют эти ViewModel-ки, частично интегрирован в ViewModel.


Последний раз редактировалось expl; 04.06.2011 в 00:55.
Старый 04.06.2011, 01:48
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Хотя чаще всего говорят, что контроллер может иметь ссылку на вьюшку - здесь мы от этого откажемся, чтобы не запутаться вконец, а тупо позволим вьюшке ссылаться на контроллер
Странное допущение "чтобы не запутаться". Мы говорим о том, что вьюшка на уровне приложения ссылается на контроллер, хотя контроллер весьма явно ссылается на вьюшку на уровне кода.

Старый 04.06.2011, 02:24
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Сегодня напрямую столкнулся с ещё одним очень интересным паттерном, развивающим MVC - это Presentation Model.
Это, как мне кажется, развитие MVP, где Presenter во многом отказывается от своей контроллирующей сущности и, если от видов не нужен отклик, может совсем и не иметь ссылок на виды (вернее иметь только для оповещения)
Суть в том, что PM выступает в роли промежуточной модели.
Вот хорошее сравнение (хотя и на примере C#, но всё понятно)
Канонический пример Фаулера.
А вот реализация на Flex. (пример и исходный код)
В микрософтах этот паттерн получил развитие как MVVM

Цитата:
3. Вьюшка имеет ссылку на контроллер и на модель
Ну этого нигде нет, единственная связь вида с контроллером - для посылки сообщения.. т.е связь по интерфейсу обсервера(эвентдиспатчера)
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 04.06.2011 в 02:33.
Старый 04.06.2011, 12:14
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 7  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Странное допущение "чтобы не запутаться". Мы говорим о том, что вьюшка на уровне приложения ссылается на контроллер, хотя контроллер весьма явно ссылается на вьюшку на уровне кода.
Это, Psycho Tiger, о чём я и говорил - каждый считает что его представление о MVC самое правильное
Я даже поспорить не могу, потому что не уверен, с позиций какой концепции ты смотришь.

А они все, эти концепции работают с одинаково переменным успехом для разных ситуаций

Цитата:
Цитата:
3. Вьюшка имеет ссылку на контроллер и на модель
Ну этого нигде нет, единственная связь вида с контроллером - для посылки сообщения.. т.е связь по интерфейсу обсервера(эвентдиспатчера)
У нас было в одной игре и зашибись работало, да и вот на картинке вьюшка ссылается на ViewModel, которая работает почти как контроллер

Я бы не один из этих вариантов в абсолют не возводил:
Название: VC.png
Просмотров: 340

Размер: 16.0 Кб


Последний раз редактировалось expl; 04.06.2011 в 12:45.
Старый 04.06.2011, 13:57
Tr1te вне форума Посмотреть профиль Отправить личное сообщение для Tr1te Найти все сообщения от Tr1te
  № 8  
Ответить с цитированием
Tr1te
 
Аватар для Tr1te

Регистрация: Jun 2009
Сообщений: 461
expl, я с вами полностью согласен, и очень рад что кто-то это написал.

А то тут все ссылаются на:
http://www.flasher.ru/forum/showthread.php?t=138349
когда там многое сугубо субъективно, и не отражает классического паттерна.

Старый 04.06.2011, 15:33
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 9  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Ну кто вам сказал, что классический паттерн - это идеально?
У него много недостатков, и развитие в виде MVP, PM, MVVM он получил не просто так.
А ссылка, как раз на обсуждение классической реализации.
Ну и expl вообще говорит, что не заморачивайтесь и делайте как надо в конкретном случае.
__________________
Отряд Котовскага

Старый 04.06.2011, 19:39
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 10  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Я один понял, что название темы не отражает сути вопроса и противоречит правилам названий тем, принятых на нашем форуме?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
MVC
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:00.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.