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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.04.2012, 23:41
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 21  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Dukobpa3 ну хорош, ты то уж тоже)) Тему создавал чтобы получить ответы, иду ли я в корне не туда, или моя реализация имеет право жить.
А за то что люди ответили, так я благодарен, узнал для себя еще пару новых вещей, особенно от катяры и artcraft
__________________
Марк Tween

Старый 12.04.2012, 23:45
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 22  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
хм, странно, а рейтинг мой не шелохнулся
__________________
Хороший отдых - половина работы.

Старый 13.04.2012, 00:14
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 23  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
))) а теперь
__________________
Марк Tween

Старый 13.04.2012, 00:23
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 24  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
теперь всё в полном порядке
__________________
Хороший отдых - половина работы.

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

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
всё -таки прокомментирую про порочный круг:
Цитата:
1. пользователь нажал включить
2. контроллер записал в модель - включено
3. модель рапортовала - произошли изменения
4. вью выставил положение компонента во включено
5. выключатель сообщил контроллеру что он теперь включен
6. см пункт 2
классический MVC
1. пользователь нажал включить - вью отрапортовало контроллеру
2. контроллер записал в модель - включено
3. модель рапортовала - произошли изменения
4. вью выставил положение компонента во включено

MVP
1. пользователь нажал включить - вью отрапортовало контроллеру
2. контроллер записал в модель - включено
3. модель рапортовала - произошли изменения
4. контроллер выставил для вью положение компонента во включено

MVVM (PM)
1. пользователь нажал включить
2. контроллер(pm/vm) записал в модель - включено
3. модель рапортовала - произошли изменения
4. контроллер(pm/vm) выставил для у себя свойство включено.
5. путём биндинга (а без него этот паттерн бессмысленен) вью поменяло свой стэйт
__________________
Отряд Котовскага

Старый 13.04.2012, 13:55
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 26  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Котяра - у тебя получается что при любом раскладе модель рапортует кому либо об изменении. А зачем это делать, если быстрее запустить метод вью из контрола? А в модель писать лишь для того, что в какой то момент во вью понадобится узнать некую переменную.
Вот пожалуйста пример :
Запускаем приложение, инициализируется контроллер и получает данные с сервера, в данном случае он получает некий ID игры, мы несомненно знаем, что ID нам пригодится потом, поэтому запишем его в модель. При запуске же в некотором текстовом поле во вьюхе нам надо показать этот ID. У нас 2 варианта, рапортовать из модели после ее изменения либо просто изменить модель и запустить метод вью из контрола. Допустим мы не будем рапортовать , а запустим метод view.setID(idData) . Во время работы приложения нам потребуется показать или узнать этот ID из вью , для этого мы дернем геттер модели.
Ага все удобно. Можно было бы воспользоваться и рапортом модели, тоесть вариант 1, принципиальных различий в этой ситуации мы не видим.
Продолжаем так же работать с нашим приложением, и теперь нам понадобится какая то другая переменная, которая нам пригодится по ходу дела, но при ее получении вид перерисовывать не надо. Записали значит в модель. Во время работы приложения дернули геттер модели, узнали эту переменную.
__________________________________________________________________________________________
Тоесть я хочу понять, и никто из вас пока не может объяснить конкретно почему
Записать данные в модель , а из модели рапортовать к вью - ПРАВИЛЬНО , нежели записать в модель, но сразу же и запустить метод вью.
Я подозреваю, что мой подход вполне имеющий право на жизнь, и назвать его быдло кодом нельзя. Суть и архитектура от этого не меняется, кроме того, что теперь нам не приходится писать лишние dispatchEvent(UPDATE) в модели на каждый сеттер и это приятно. Кроме всего прочего, если модель у нас все таки будет держать всю логику, а контроллер будет тонкой прослойкой, как говорит нам вики, то опять же смысл не поменяется :
controller :
model.setVar = vars ( в этот момент проходят там разные проверки и прочее и setVar становится такой как нам надо, например распарсенной)
view.update(model.setVar);

И да, вью полюбому будет держать модель, а чеж нет?!
View:
if(model.setVar[5] ) ...
__________________
Марк Tween

Старый 13.04.2012, 14:17
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 27  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Цитата:
Тоесть я хочу понять, и никто из вас пока не может объяснить конкретно почему
Записать данные в модель , а из модели рапортовать к вью - ПРАВИЛЬНО , нежели записать в модель, но сразу же и запустить метод вью.
Только потому, что к одной и той же модели может быть привязано несколько view или controller. И несколько контроллеров, кстати (я могу, например, отображать модель в виде картинок и в виде текста. Каждая будет иметь свой контроллер). В этом случае в контроллере вместе с моделью нужно везде таскать эти все view. И при добавлении нового view (для той же модели) придется по всем контроллерам искать, где же используется этот элемент данных и кто от него зависит. Применения - например, в статусной строке и "области подсказок окна" могут выводиться данные, зависящие от модели в "основной" части окна. При этом в статусной строке мы можем в дальнейшем добавлять еще различные индикаторы статуса (т.е. в момент разработки полных их набор мы не знаем и делаем их последовательно).

Цитата:
Суть и архитектура от этого не меняется, кроме того, что теперь нам не приходится писать лишние dispatchEvent(UPDATE) в модели на каждый сеттер и это приятно.
Ну так нужно по-другому модель собирать, чтобы не приходилось dispatchEvent писать .

Цитата:
model.setVar = vars ( в этот момент проходят там разные проверки и прочее и setVar становится такой как нам надо, например распарсенной)
Угу. А через месяц в model Добавится поле parseError и setVar будет менять еще и его в случае ошибок. Вы точно уверены, что хотите после этого искать все контроллеры, работающие с моделью, из контроллеров смотреть, поддерживает ли view это поле и обновлять view? Этот подход может привести к очень интересным ошибкам. Особенно через несколько подобных изменений.

Старый 13.04.2012, 14:35
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 28  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
maxkar , об данной конкретной ситуации разговор и не идет. Хотя даже если рассмотреть ее, я не понял откуда у вас появились такая странная логика. Вот пожалуйста
Код AS3:
mainController.as
initialize() {
globalModel = new GlobalModel()
globalView = new GlobalView(globalModel)
controller1 = new Controller1()
controller2 = new Controller2()
view1 = new View1(globalModel) // создается в controller1 
view2 = new View2(globalModel) //  создается в controller2
.....
function onMainControllerGetData()
{
   globalModel.vars = someVars;
   globalView.update(globalModel.vars)
}
....
Controller1.as
function onController1GetData()
{
   globalModel.vars = someVars; // этой строчки может и не быть вообще
   view1.update(globalModel.vars)
}
Или я что то не так понял?
Если не так поясните, потому что этот момент на будущее знать надо.
Пока что для простых приложений хватает одного МВС, поэтому как написал выше-выше и пользуюсь такой архитектурой.
__________________
Марк Tween

Старый 13.04.2012, 14:54
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 29  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Даёшь каждой вьюхе свой контроллер? Нафига контроллер статусбару, который честно показывает данные и ничего больше? Нафига приложению сто контроллеров, это типа процессора i100? Быстрее думать будет? Или чтоб хакеры обломались?))
У Вас какое-то странное понимание слова "парадигма" и назначения шаблонов. Вы берете от шаблона название, и только. Заложенные в нем принципы, типа оповещения событиями от Модели, имеют под собой четкое обоснование – количество Вьюх изначально вообще неизвестно. Совершенно не важно, сколько их, и это базовая концепция MVC. То есть MVC имеет смысл применять, когда ситуация именно такая. Какие-то другие варианты "как удобно мне" это не шаблон, а "что вижу то пою". Нет смысла притягивать за уши изуродованный труп MVC. Дайте этому свое название, опишите все преимущества такого решения и станьте автором нового шаблона. Докажите, что MCVCVCVCVCVCVCVCVCV это круто.
__________________
Reality.getBounds(this);

Старый 13.04.2012, 15:01
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 30  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
in4core, дело в том, что все это действительно не так уж и важно, следовать "букве закона", или писать находу собственные импровизации, очень может статься, что и неплохие, да, а может и наоборот.
Вы поймите суть: абстрагироваться по максимуму от всевозможных частностей. Например, view.setID(idData) - это частность, т.е. фактор имеющий конкретное значение в конкретном месте отдельно взятого проекта, например, вам сейчас и здесь так делать "удобно". В другом проекте или даже по мере развития того же этот фактор вообще может и не встретиться или может иметь совсем другое значение и т.п. А ваш класс вью уже завязан на эту частность и бог знает сколько таких заплаточек у вас будет еще. А dispatchEvent(UPDATE) - это как раз способ от этой частности уйти раз и навсегда.


Последний раз редактировалось alexcon314; 13.04.2012 в 15:06.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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