1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
|
|
1 | |
AS 3.0 Где реализовывать логику?16.10.2014, 18:15. Показов 505. Ответов 5
Метки нет (Все метки)
Добрый день!
В соответствии с концепцией MVC как представление, так и контроллер зависят от модели. Однако модель не зависит ни от представления, ни от контроллера. Как это понимать? Приложение будет работать даже, если останется одна модель, верно? Вики дает определение активной модели: "модель — это не только совокупность кода доступа к данным и СУБД, но и вся бизнес-логика. " А как быть в случае, когда часть логики определяется представлением? Например, есть два автомобиля, их движение без проблем может задаваться в модели. А вот как и где реализовывать их столкновение? Определить сталкиваются ли авто можно только hitTestObject-ом в виде. Или же пихать всю логику в контроллер. Но в обоих случаях модель становится зависимой от вида и/или контроллера.
0
|
16.10.2014, 18:15 | |
Ответы с готовыми решениями:
5
Где реализовывать интерфейсы, структуры? где лучше реализовывать методы в классе или вне Где изучить логику? Где держать логику? |
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
|
|
16.10.2014, 18:37 | 2 |
В представлении hitTestObject-ом определили столкновение 2 автомобилей, представление сообщило об этом контрлеру, контролер перезаписал данные в модели, модель сообщила об измененных данных, ее услышал контролер и передал представлению информацию об измененных данных.
Представление ни при каких условиях не должно напрямую обновлять модель, чтение из модели разрешается, но нежелательно. По-хорошему фодель должна обновлять в себе данные тоже через контролер, т.е. изменилось какое-то свойство, модель сообщила об этом контролеру и контролер уже смотри - надо ли в моделе менять что-то еще, если это свойство изменилось.
0
|
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
|
|
17.10.2014, 10:06 | 4 |
Так вся логика и должна быть в контролере
Модель - это просто данные Представление - UI Контролер - выполняемые команды
0
|
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 102
|
|
17.10.2014, 10:11 [ТС] | 5 |
Theoryofgames, тогда это пассивная модель. Вики дает определение, что "в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, но и вся бизнес-логика. ... В свою очередь, контроллеры представляют собой лишь элементы системы, в чьи непосредственные обязанности входит приём данных из запроса и передача их другим элементам системы. Только в этом случае контроллер становится «тонким»".
P.S. Картинка Ваша, насколько помню, демонстрирует PureMVC.
0
|
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
|
|
17.10.2014, 10:39 | 6 |
Да, это просто для наглядности.
Возможно я не прав, c mvc я особо не работал, но вот как все это мне представляется: Допустим у нас есть есть следующие участники - Со стороны View: UI_Car1 UI_Car2 UI_Interface UI_Road Со стороны Модели: DO_Car1 DO_Car2 в UI_Road HitTestObject-ом мы определяем столкновение. Послыаем информацию об этом в конттролер. Контролер смотрит, кого ему нужно оповестить в связи с произошедшим событием. В нашем случае это DO_Car1, DO_Car2 и UI_Interface. UI_Interface получает информацию о том, что произошло столкновение и зажигает индикатор аварии. DO_Car1 получает информацию об аварии и высчитывает нанесенный урон, затем сообщает UI_Car1 и UI_Interface о том, что надо отрисовать поломку. DO_Car2 получает информацию об аварии и высчитывает нанесенный урон, затем сообщает UI_Car2 и UI_Interface о том, что надо отрисовать поломку. Обработка события закончена.
0
|
17.10.2014, 10:39 | |
17.10.2014, 10:39 | |
Помогаю со студенческими работами здесь
6
где лучше содержать логику mvc Где располагать логику приложения, когда используем паттерн mvvm? Программа тестирования: как продумать ее логику и где и в каком виде хранить файлы вопросов Как реализовывать IEnumerator? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |