|
|
|||||
Регистрация: Jan 2004
Адрес: На чердаке.
Сообщений: 1,112
|
Очевидно, очевидно). Но сначала почему-то прочиталось, будто вью не может узнать о состоянии модели без оповещения со стороны последней. Хотя про вью там вообще ни слова не было. Короткое замыкание под вечер.
__________________
...Тебе страшно? Мне - нет. |
|
|||||
Banned
[+5 23.05.09]
[+1 23.05.09] Регистрация: Mar 2009
Сообщений: 93
|
Вот такой еще вопрос - конечно, больше ООП, но косвенно касается MVC:
можно ли создать вьювер, класс которого является базовым для класса мувика в библиотеке (динамического)? Другими словами, создаем объект-мувик класса А1, базовым для которого является А, который, в свою очередь, должен выступать вьювером в модели: var movie:A = new A1(). Но с другой стороны var viewer_A:A = new A(model, controller). Просто мувики в библиотеке однотипные и принадлежат одному базовому классу, переопределять их не хочется, а поведение идентичное и может зависить от флагов. Было бы удобно задать var movie:A = new A1(model, controller), но разумеется, что ругается динамический класс. А при попытке var movie:A = A1(); movie.setMC(model, controller) ругается прототип-абстракт из-за недостатка параметров в конструкторе. Думал отправить в конструктор А все 3 параметра и переопределить его конструктор - ругается. Как-то можно сделать этот "двойственный" конструктор? Или проблемы не в этом, а в неправильности подхода? Просто вкладывать мувик во вьювер не хотелось бы - лишнее звено, да и удобство отображения налицо. |
|
|||||
Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
|
Вот кстати тоже вопрос. Что является правильным: при изменении скорости, расчитывать новые координаты в Модели или в Представлении?
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
В модели.
|
|
|||||
Banned
[+5 23.05.09]
[+1 23.05.09] Регистрация: Mar 2009
Сообщений: 93
|
Как же все просто получается, когда вникнешь и понимаешь ...
Удивительно, что такое вроде бы однородное понятие как шаблон MVC трактуется так по-разному у разных источниках. Википедия (вместе с Муком) трактуют MVC вот так: [IMG]http://www.**************/PqvZ020.png[/IMG] соответственно этому создается триада: var model:IModel = new Model(); var controller:IController = new Controller(model); var view:IView = new View(model, controller); Однако, прочитывая старые посты тут, пару раз натыкался на замечания небезызвестного __etc (спасибо ему). Поразбирался, "примерял на себя", сделал выводы: [IMG]http://www.**************/Pqw1360.jpg[/IMG] прямые стрелки - прямые связи пунктирные - событийные (могу ошибиться по поводу событийной связи модель->представление, но вроде как может иметь место, дабы избежать лишнего "пустого" обработчика в контроллере) Соответственно, построение триады выглядит так: var model:IModel = new Model(); var view:IView = new View(); var controller:IController = new Controller(model, view); При таком исполнении в качестве Модели легко может выступать DisplayObject-класс из библиотеки, причем, даже без класса-предка, который бы использовался для управления и выступал бы посредником между классом библиотеки и контроллером: события можно назначить прямо в контроллере. Сразу отпал вопрос с назначением родителя для класса из библиотеки, а также сильно упростился механизм и ответственности в компонентах триады MVC. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Рисунок у википедии правильный. Может добавляться событийная связь от модели к контроллеру, но не всегда.
Цитата:
|
|
|||||
Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
|
Может в конструктор Вида надо передавать ссылку на модель? Это нужно для того, чтобы вид (в конструкторе) подписывался на события Модели.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Cybo, необязательно, но можно и передать. В конце концов, ссылку вьюверу на модель может отдать и контроллер.
|
|
|||||
Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
|
Наверное да... тогда в дальнейшем можно динамически менять контроллер, тем самым использовать паттерн "стратегия".
Добавлено через 1 минуту ой. нет. разговор ведь о модели. |
Часовой пояс GMT +4, время: 20:59. |
|
« Предыдущая тема | Следующая тема » |
|
|