![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
эээ... вью слушает клик - рапортует контроллеру, тот в свою очередь создает младшийКонтроллер и пихает в него вью. младшийКонтроллер создает маладшуюМодель и младшуюВью, пихает в младшуюВью маладшуюМодель и цепляет младшуюВью к главнойВью. далее контроллеры выполняют каждый свои функции и следят за своими вьюхами через свои модели.
|
|
|||||
|
Мне очень нравится сравнение конструирования ПО со строительством. (Шаблоны проектирования вначале появились именно в архитектуре зданий=))
Так вот если мы строим город, то применяем некоторый шаблон. У нас есть спальные районы, бизнес-районы, парки отдыха. Если увеличить масштаб, то можно увидеть повторение этого же шаблона - в каждом районе есть столовая, детсад и школа. Если еще увеличить, то в каждой квартире есть спальня, кухня, рабочий кабинет. Опять тот же шаблон. Так почему в проекте один шаблон ДОЛЖЕН быть применет ТОЛЬКО ОДИН раз? Добавлено через 4 минуты Dukobpa3, не сомневаюсь. Я внимательно читаю эту тему, как и все остальные темы в которых я пишу. Потому и еще раз напомнил, про вложенность. А то про это как то забывается у многих
__________________
Сам себе репортер |
|
|||||
|
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
Вот меня сильно интересует вложенность
предположим /*********************************************** ** класс главной вьюшки ** ***********************************************/ package { public class View extends Sprite { private var _model:Model; public function View(model) { _model = model; this.addListener(MouseEvent.MOUSE_CLICK, onMouseClickAddNewMVC); } private function onMouseClickAddNewMVC(e:MouseEvent):void { var cController:CarController = new CarController(this); } } } /*********************************************** ** класс КарКонтроллер ** ***********************************************/ package { public Class CarController { private var _host:View; public funcrion CarController(parentView) { _host = parentView; var cModel:CarModel = new CarModel(); var cView:CarView = new CarView(cModel); _host.addChild(cView); } } } |
|
|||||
|
я бы так делал
/*********************************************** ** класс КарКонтроллер ** ***********************************************/ package { public Class CarController { private var _view:CarView; private var _model:CarModel; public funcrion CarController() { _model:CarModel = new CarModel(); _cView:CarView = new CarView(cModel); } public function get view():CarView { return _cview; } public function get view():CarView { return _cview; } public function get model():CarModel { return _model; } } } Главный контроллер смотрит - можно это сделать или нельзя и, если можно - создает новый контроллер машинки. Затем главный контроллер получает у созданного контроллера вюшку машинки и добавляет ее в главную вьюшку
__________________
...вселенская грусть |
|
|||||
|
Ага, примерно так.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Lorem ipsum
|
http://ru.wikipedia.org/wiki/Model-View-Controller
Конкретно раздел "Наиболее частые ошибки". Я уже писал здесь ранее, что склоняюсь к тонкой прокладке (Controller) между логикой (Model) и ее отображением (View).
__________________
Поймай яблоко 2! |
|
|||||
|
Вот такой вопрос в разрезе MVC. Предположим использую я в программе какой-то внешний, по отношению к программе объект. Он также имеет структуру MVC. В моей программе он отображает содержимое, которое моя программа ему сообщила ранее и изменяет его, специф. образом, по сигналу моей программы. Так как же их завязывать? Какая часть этого, внешнего, объекта будет выражать его самого, что мне экземпляры контролов создавать что ли? Тогда не странно ли будет создавать контролл а добавлять на сцену переданную им ссылку, а общаться опять же через контролл? Что будет интерфейсом этого объекта? Ведь мы привыкли создавая объект, нами он написан или нет неважно, общаться с ним же, а не с его контролом. Не создается впечатления черезголовуштанынадевания?
Последний раз редактировалось fish_r; 05.06.2011 в 03:38. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Если это внешний объект, то у него должен быть интерфейс модуля и работать мы с ним должны как с view если он таковым является.
|
|
|||||
|
А как это "интерфейс модуля"?
Подумал, подумал... В этом случае "фасад" подходит, который является DisplayObjectContainer-ом. Приложение общается с ним думая, что он и есть объект, а он сообщает контролу всё необходимое, в тоже время использует преимущества InteractiveObject-а (подписка на события и пр.). То есть мы можем его и "пощупать" и сказать ему что нибудь, вместо того, чтобы "щупать" одного, а говорить другому. Как такой вариант? |
|
|||||
|
Ещё один момент есть... Сам с собой разговариваю ...
. Смущает то, что контролл зачастую просто транслирует данные через свои сеттеры в сеттеры модели получается дубляж переменных в обоих классах.Насколько плохим тоном является размещение в сеттере контролла сеттера модели? Без промежуточных переменных, когда они никак не используются в контролле, конечно. То есть получается конструкция типа: Последний раз редактировалось fish_r; 09.06.2011 в 15:39. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:57. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|