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