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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.01.2009, 05:01
ign вне форума Посмотреть профиль Отправить личное сообщение для ign Найти все сообщения от ign
  № 61  
Ответить с цитированием
ign
 
Аватар для ign

Регистрация: Jan 2008
Сообщений: 36
Цитата:
Сообщение от __etc Посмотреть сообщение
Проверка в сеттере по определению должна быть, а «холостые» вызовы — неизбежны в MVC.
Холостые вызовы вполне можно избежать. Делается это так называемым "Интеллектуальным контроллером", который протоколирует действия, и прежде чем изменить модель смотрит, а нужно ли ее изменять.

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

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Цитата:
Холостые вызовы вполне можно избежать. Делается это так называемым "Интеллектуальным контроллером", который протоколирует действия, и прежде чем изменить модель смотрит, а нужно ли ее изменять.

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

Старый 21.01.2009, 11:55
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 63  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
ign, ramshteks, а зачем протоколировать? может тупо хранить текущее значение?

Старый 21.01.2009, 12:04
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 64  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Цитата:
ign, ramshteks, а зачем протоколировать? может тупо хранить текущее значение?
лично я это и имел ввиду. просто выразился не так. Ну насчет "тупо" не уверен, так как сравнение с текущим значение входящего значения, помогает порой значительно увеличить производительность. Вам же этого не знать... вы же игродел емое)

Старый 21.01.2009, 12:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 65  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от ign Посмотреть сообщение
Холостые вызовы вполне можно избежать. Делается это так называемым "Интеллектуальным контроллером", который протоколирует действия, и прежде чем изменить модель смотрит, а нужно ли ее изменять
Этим занимается сама модель, а не какие-то левые контроллеры. Этот твой «контроллер» просто вместо вызова сеттера вызовет сначала вызовет геттер, сравнит значения, потом вызовит сеттер, что является бессмысленной лишней работой и лишним кодом.

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

Регистрация: Jan 2008
Сообщений: 36
Цитата:
Сообщение от __etc Посмотреть сообщение
Этим занимается сама модель, а не какие-то левые контроллеры. Этот твой «контроллер» просто вместо вызова сеттера вызовет сначала вызовет геттер, сравнит значения, потом вызовит сеттер, что является бессмысленной лишней работой и лишним кодом.
Этот мой "контроллер" не обращается к модели. Он сравнивает предыдущую операцию над моделью с текущей. И, в случае, если это одна и та же операция - не повторяет ее.
на rsdn пишут именно так.

Цитата:
Сообщение от ramshteks Посмотреть сообщение
все это должно быть реализовано именно в модели. Модель должна протоколировать, а не контроллер.
В этом случае как раз появляется холостой вызов метода в модели.


Последний раз редактировалось ign; 21.01.2009 в 14:27.
Старый 21.01.2009, 15:47
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 67  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Фишка лишь в том, где ты будешь производить эти самы проверки. И как бы по идее то, контроллер не должен хранить данных о модели. Модель на то и дана чтобы хранить данные и следить чтобы они удовлетворяли неким правилам, формулам и так далее.
Простой пример. Во флеше есть мувиклип. Который на определенном уровне хранит модель. так вот когда ты говоришь ему, поверника, дорогой, мувик мне на 45 градусов, ты надейюсь не делаешь этих проверок повернут ли он уже? так как этим занимается модель. она и следит за тем чтобы не производить лишних действий с данными.

Старый 21.01.2009, 18:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 68  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от ign Посмотреть сообщение
Этот мой "контроллер" не обращается к модели. Он сравнивает предыдущую операцию над моделью с текущей. И, в случае, если это одна и та же операция - не повторяет ее.
Так один фиг сравнение происходит в контроллере. Так или иначе, оно происходит. А реализовывать все эти операции, сохранять, что и как с ней делали, бла-бла, всё это если и принесет какой-то прирост производительности, то настолько мизерный, что затраты на реализацию себя не оправдают совершенно.

Старый 21.01.2009, 18:47
ign вне форума Посмотреть профиль Отправить личное сообщение для ign Найти все сообщения от ign
  № 69  
Ответить с цитированием
ign
 
Аватар для ign

Регистрация: Jan 2008
Сообщений: 36
Цитата:
Сообщение от __etc Посмотреть сообщение
Так один фиг сравнение происходит в контроллере. Так или иначе, оно происходит. А реализовывать все эти операции, сохранять, что и как с ней делали, бла-бла, всё это если и принесет какой-то прирост производительности, то настолько мизерный, что затраты на реализацию себя не оправдают совершенно.
Верно, если это сравнение добавить в контроллер, то избежать холостых вызовов можно. Об этом и речь

Цитата:
Фишка лишь в том, где ты будешь производить эти самы проверки. И как бы по идее то, контроллер не должен хранить данных о модели. Модель на то и дана чтобы хранить данные и следить чтобы они удовлетворяли неким правилам, формулам и так далее.
Контроллер не хранит никаких данных о модели. Он знает, например, что два раза ее одинаково изменять не имеет смысла. Модель насколько я понимаю, должна содержать в себе минимум подобной логики. В упомянутой выше статье был пример, как это сделано в контроллере. На мой взгляд удобно. Но в конечном счете, вы сами решаете: в контроллере описывать проверку или в модели.

Старый 21.01.2009, 19:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 70  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от ign Посмотреть сообщение
Верно, если это сравнение добавить в контроллер, то избежать холостых вызовов можно. Об этом и речь
Да, только вот модель может изменять не единственный контроллер, а заводить в каждом контроллере сравнение по операциям не получится, потому что контроллеры друг с другом не договариваются. Допустим, есть контроллеры А и Б. А выполняет операцию А1, Б после этого выполняет Б1, потом А выполняет А1 и считает, что модель не изменилась, потому что операция одна и та же, но на самом деле модель изменилась контроллером Б в промежутке между операциями А1. В итоге, решением проблемы является присвоение контроллера с операциями прямо к модели, т. е. получается прокси, через который общаются все остальные контроллеры. Но в конечном итоге этот самый контроллер операций исчезает и превращается всё в ту же модель, в которой происходят холостые вызовы сеттеров, только в существенно усложненном виде.

Если в приложении единственная неразветвленная модель и единственный контроллер, который имеет монопольный доступ к возможности изменения модели, то схема с операциями имеет право на существование. В приложении поосновательнее, с разветвленной моделью, множественными триадами MVC и перекрестыми связями, такой подход смысла не имеет.

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

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

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


 


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


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