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

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

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