![]() |
Товарищи, если вы в таком ключе продолжите рассуждать, то придете к тому что при наезде мышкой на Кнопку та отправляет сообщение контроллеру "Боже, на меня наехали!", тот срочно требует у модели изменить состояние на "кнопка К в состоянии наезда" и модель кричит кнопке "меняй стейт на "наехали"!"
Имейте совесть - зачем контроллеру знать о каком-то драге, с этим прекрасно справится вью. Вот когда действие будет совершено и объект отпустят - тут другое дело. Взять те же шахматы. Вот начало игры, модель выставила фигуры... Кто делает ход? Ну ОК, допустим предполагается изначально, что Игрок. Вот он хватает фигуру и опускает ее на какую-то клетку. Кто сейчас решает - будет ли фигура поставлена на эту клетку? (зависит от фигуры, правил ее хода, и клетки) Что Вы выберете - Вью или Модель? Кому отдадите эту логику? Вью вроде как по барабану, ее дело - отобразить. Модель должна решать, останется ли фигура на клетке и ход перейдет машине, или фигура вернется и ход останется за игроком? Как по мне - Контроллер здесь на лицо. От того, что вы запихнете его в модель - суть не изменится. Это логические операции, и они должны осуществляться контроллером. Я уже не говорю о рассчете ответного хода машины. Добавлено через 15 минут Что бы там ни говорили на вики - Решения должен принимать Контроллер, никак не Модель. Говорить, что Модель - это НЕ база данных, было бы справедливо в одном случае - если бы в этой архитектуре была еще и База Данных. Но она как раз и представлена Моделью, обзывайтесь как хотите. Кто-то должен хранить состояние, и этот кто-то - не Вью и не Контроллер. Здесь Модель мира - это доска: положения фигур, тактические очки игроков, состояние "чей ход", таймер и замечания судей. Но вовсе не Модель решает, куда сходить и сколько очков дать за ценность хода. Максимум, что она может делать сама - считать время, но и здесь на самом деле Таймер это отдельный маленький контроллер, МЕНЯЮЩИЙ состояние параметра "время" Модели)) |
Цитата:
На примере той же игры с планарными графами по время таскания точки система пересчитывает пересечение и визуализирует точки и линии по разному, в зависимости от того, пересекается они или нет. Не хотите ли вы сказать, что я должен продублировать функционал пересчета пересечения как во вьюве, так и где то еще?? Цитата:
Интеллект может рассчитывать контролер, так как по сути он симулирует действие того же пользователя, только в качестве пользователя выступает программа. Откуда по вашему растут ноги у правила что у классов не должно быть открытых членов, и они должны быть заменены на свойства(гетеры/сетеры)? Цитата:
Но это лирическое отступление. А по поводу того, что логика находится в контроллере а не в моделе... Конечно так можно сделать. Только это уже будет не MVC вовсе. Это говорит мне не только вики, а само название «модель», «здравый смысл» и интернет:) http://www.rsdn.ru/article/patterns/...wPresenter.xml http://chtivo.webhost.ru/articles/mvc.php ... |
Цитата:
Кстати, мне кажется, что с MySQL у Вас та же ситуация, что и с PHP )) Внутри MySQL несколько технологий и, скажем, если работать в модели innoDB, то там и транзакции есть и хранимые процедуры и вообще много чего. |
2Jack
Цитата:
DocumentView, MVP, MVVP - не перестают быть от этого mvc - главное отделение данных от вида. само слово данные (модель) уже говорит, что это может быть просто БД. При добавлении контроллера мы и бизнес логику отделяем от греха подальше. А за бизнес логику в sql надо бить. Есть конечно исключения, когда они продиктованы производительностью ( мол лучше в одном запросе получить сложную выборку через хранимые процедуры), но они только подтверждают правила. А вообще мне пофик. Что я тут распинаюсь) Вы пока теоретик, вот и теоретизируйте себе по вики и учебникам. Я как практик говорю: логики в модели не должно быть. Вы хотя бы прочитайте ссылки, которые сами постите. |
Цитата:
Безусловно зависит от контекста, но в общем случае не надо искать то чего нет. Это дело представления как отобразить перетаскивание - она может просто переместить элемент, добавить анимацию вокруг него, сделать колебания вокруг новой позиции. Моделе в данном случае надо только знать - была позиция одна, элемент переместился (и остался на позиции 2). |
Цитата:
В свое время я как раз очень серьезно с этим столкнулся... Тот период жизни, когда я начал делать сайты и юзать mysql, я пришел с разработки бизнес приложений, и то как я привык работать с базами данных, принципе было не возможно на mySql... Но вопрос не в том, что сейчас умеет mySql, а что он умел, когда формировались веб программисты в своем большинстве... Добавлено через 5 минут Цитата:
Откуда такая информация? Стало быть у вас большой опыт написания бизнес приложений? Кстати, хранимая процедера для создания отчета - это не логика.... |
Джек, я не вижу смысла этот странный спор продолжать. Вы прекрасно понимаете, что кто-то контролирует поступающие данные и принимает решения об изменении состояния модели или вью. Ваша модель такая вся из себя, сама ходит, сама говорит - отлично. Сама переводит себя в состояние "я показываю пользователю системное окно об ошибке" (видимо так, иначе кто заставит Вью это показать - контроллера ведь нет). Всё, что нужно - это попытаться отделить в своем сознании контроллер от базы данных (их союз Вы сейчас называете "моделью"), и все встанет на свои места. Окажется, что контроллер никак не противоречит "здравому смыслу". Модель хранит Состояния, Контроллер отвечает за Действия, а Вью предоставляет интерфейс для показа Состояний пользователю и получение от него Действий. Удачи.
|
Действительно, Джек. Нет смысла продолжать спор с людьми для которых MVC - это некая религия, а не просто парадигма программирования, которых кто то научил, одному из возможных способов ее исполнения (который, в принципе, противоречит изначальной роли составляющих её компонентов), или они сами до этого дошли, и всё, это считается единственно верный и возможный путь, без вариантов.
В случае, который описывали вы я бы сообщал через контроллер о новых координатах нодов в модель. Модель бы определяла имеется ли пересечения, и если да то ... только в этом случае, модель диспатчит об необходимости изменения чего либо. А вообще возможно более удачной была бы реализация не MVC-архитектуры а MVP? Тоже популярное решение. Wolsh системные окна об ошибках должен бы давать команду показывать контроллер, когда это было функционалом модели? |
Цитата:
Кстати mvp - это практически перекладывание всего на контроллер, и это всё равно mvc. |
Цитата:
Кажется у этого всего есть определение: Реализация взаимодействия слабосвязанных компонентов программы. |
| Часовой пояс GMT +4, время: 21:36. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.