Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ваша реализация MVC (http://www.flasher.ru/forum/showthread.php?t=131588)

Babylon 05.08.2013 19:28

Лучше иметь 3 контроллера - для виджетов вида, вида и модели, модели и сервисов. Ну эт на любителя.

Zebestov 05.08.2013 19:59

Три контроллера на все приложение? Это очень на любителя.

Babylon 05.08.2013 20:04

Расскажите, сколько должно быть у профи?

Zebestov 05.08.2013 20:09

Этот вопрос как и многие другие подобные нашли свои ответы в этом обсуждении.

Babylon 05.08.2013 20:14

Что бы их найти надо прочитать много страничек. Раз Вы Zebestov Вы и расскажите о лучшей практике.

Isfet 05.08.2013 20:25

Цитата:

Сообщение от Zebestov (Сообщение 1142743)
Вьюшка диспатчит событие, которое обрабатывает соответствующий контроллер, который, в свою очередь, вызывает нужный метод соответствующей модели. Выше этой троицы без особой надобности никто ничего о происходящем не узнает.

а как узнать данные в каком классе модели нужно изменить? допустим в том примере который я писал выше, мы изменили параметры фильтра, диспатчим об этом событие? по идее нужно передавать какие-то данные, о том что мы нажали(какой именно фильтр продиспатчил событие), чтобы потом в главной модели можно было найти модель в которой храняться данные для этого фильтра, и изменить их. Как такое осуществить?

cleptoman 05.08.2013 20:39

у каждой маленькой модели может быть свой маленький контроллер, который ее меняет..вам не обязательно тянуть все на самый верх, чтоб потом спускать на самый низ..главная модель содержит эти маленькие модельки, может даже их тоже слушать и передавать об этом выше куда надо, но вся система , в итоге, сводится к тому что у модельки свой контроллер, вернее наоборот ...

простой пример: главной контроллер игры..создает контроллеры юнитов, передавая им их маленькие модели и вьюшки...дальше у кого как. много зависит от структуры

Babylon 05.08.2013 20:41

Кто на, что подписался:)

Zebestov 05.08.2013 21:57

Цитата:

Сообщение от Babylon (Сообщение 1142753)
Что бы их найти надо прочитать много страничек. Раз Вы Zebestov Вы и расскажите о лучшей практике.

Отсылка к указанной теме неслучайна. Основное, что я вынес из этой дискуссии, — это отсутствие жестких правил реализации MVC. Поэтому и вопрос "как там у профи" счел неуместным. Эти самые профи до сих пор не могут решить кто тоньше: модель или контроллер.
Но вот определение "три контроллера на приложение" я расцениваю как стремление "централизовать" управление. Сколько контроллеров у меня? Столько, сколько потребуется для того, чтобы это самое управление "распределить".

Babylon 05.08.2013 22:30

Вы правильно расценили. Именно ядро должно быть толще, а MVC тоньше. Ну эт я как любитель рассуждаю.

Zebestov 05.08.2013 23:17

В моих приложениях MVC лютует по всему коду от и до.

Isfet 06.08.2013 12:05

а как часто нужно пользоваться баблингом в MVC , стараться избегать его использования, и использовать только при большом количестве детей во вьюшке?

Zebestov 06.08.2013 12:16

Когда строишь забор, как-то само собой понятно, когда нужно часто пользоваться ножовкой, а когда — молотком.
Баблинг — это инструмент. Когда нужен, тогда используй.

Babylon 06.08.2013 14:43

Баблинг заметно всё тормозит, поэтому лучше без него. Но иногда без баблинга не обойтись.

Psycho Tiger 06.08.2013 15:00

Цитата:

Сообщение от Babylon (Сообщение 1142759)
Вы правильно расценили. Именно ядро должно быть толще, а MVC тоньше. Ну эт я как любитель рассуждаю.

MVC – "разделяй и влавствуй", ядро – какой-то кусок приложения, на котором всё строится.
По мне это как сравнивать танцы и небоскрёб. Что Вы хотите сказать?

Babylon 06.08.2013 15:12

Я не сравниваю. Можете если хотите все интерфейсить, утолщяя приложение проксями и медиаторами , мне же ближе наследование от общего Сore. Тем более если Вы автор-одиночка. Смысл интерфейсов в заглушках. Вы работаете с тем что пока нереализованно, но есть некий концепт.

Zebestov 06.08.2013 15:43

Цитата:

Сообщение от Babylon (Сообщение 1142799)
Я не сравниваю.

Та да:
Цитата:

Сообщение от Babylon (Сообщение 1142759)
Именно ядро должно быть толще, а MVC тоньше.

А вот это вообще набор слов:
Цитата:

Сообщение от Babylon (Сообщение 1142799)
Можете если хотите все интерфейсить, утолщяя приложение проксями и медиаторами.

Или это и есть "Ваша реализация MVC"? Тогда, пожалуйста, подробней.

etc 06.08.2013 17:20

Интересно, сколько у вас событий, что бабблинг тормозит?

carrotoff 06.08.2013 18:15

Цитата:

Сообщение от Zebestov
Тогда, пожалуйста, подробней.

Мне тоже интересно. Как я заметил, читая разные темы форума, Babylon является ярым приверженцем XML, наверняка он и в реализации структуры ТРУЪ MVC есть.

Цитата:

Сообщение от Babylon
Можете если хотите все интерфейсить, утолщяя приложение проксями и медиаторами

И все-таки Вадим вам дал прекрасную ссылку на очень хорошую и плодотворную беседу, из которой следует, что MVC -это не 2 варианта развития событий: "общий Core" или "с проксями и медиаторами"

Цитата:

Сообщение от Babylon
Вы работаете с тем что пока нереализованно, но есть некий концепт.

Это плохо? Ну тогда с вашей точки зрения все ООП со своими абстракциями, инкапсуляциями и полиморфизмами в опасности.

Psycho Tiger 06.08.2013 18:31

Цитата:

Сообщение от Babylon
Смысл интерфейсов в заглушках. Вы работаете с тем что пока нереализованно, но есть некий концепт.

Тот же концепт даст пустой метод в классе, без реализации классом интерфейса.

dimarik 06.08.2013 18:34

Так-с, про XML уже сказали. Жду когда расскажут про агрегатирование.

Babylon 06.08.2013 19:02

Цитата:

Сообщение от Psycho Tiger (Сообщение 1142809)
Тот же концепт даст пустой метод в классе, без реализации классом интерфейса.

Дык понятно, что MVC не обязывает к интерфейсности. Но наличие интерфейса обязывает иметь указанные в нем методы. Интерфейсы по большому счету не нужны если вы один проектируйте приложение. Интерфейсы для внешнего использования.

Добавлено через 10 минут
dimarik, пожалуйста конкретизируйте свой вопрос.

Добавлено через 25 минут
Цитата:

Сообщение от Zebestov (Сообщение 1142802)
Та да:
А вот это вообще набор слов:
Или это и есть "Ваша реализация MVC"? Тогда, пожалуйста, подробней.

Я то как раз за минимизацию использования интерфейсов. Но когда компоненты MVC разрабатывают разные люди наверно он необходим. Я даже в этом уверен. И повторяю - это не сравнение это следствие расширения функциональности. Посмотрите на Drupal. Его ядро только увеличивается и это плюс, а не минус. Вторым плюсом является использование механизма entity reference и типов сушностей - бандлов. На которых и строится агрегатирование. Понятно, что идейно всё это идет от Java, но в AS3 и близко этого нет.

Добавлено через 36 минут
Цитата:

Сообщение от etc (Сообщение 1142807)
Интересно, сколько у вас событий, что бабблинг тормозит?

Вы знаете не считал. Это было изначально не мое приложение.

dimarik 06.08.2013 20:04

Цитата:

Сообщение от Babylon (Сообщение 1142813)
Интерфейсы по большому счету не нужны если вы один проектируйте приложение. Интерфейсы для внешнего использования.

Вот и дорассуждались. Демагогия.

Babylon 06.08.2013 20:31

okouser, инжекции заменяют один класс другим так чтобы Вы этого не заметили. При чем тут чистота кода? Что Вы собирайтесь менять в ядре??? И если уж соберетесь, то это затронет и интерфейсы и все классы которые его имеют. Извините за демагогию. Я не воспитан в ТЗ и слава Богу.

Добавлено через 5 минут
Я полностью разделяю точку зрения автора http://javascript.ru/optimize/antimvc
Роль DOM может играть XML

Babylon 06.08.2013 21:27

на другой реализации интерфейса... Умом не понять. Моим. Интерфейсы нужны чтобы одна часть системы - ваша понимала другую часть, написанную не вами. Для этого исп. прокси, которые экстендят чужие классы и реализуют нужный интерфейс понятный вам. Какие инициализации вы о чем?

Бизнес-логика... Я про нее и не думал, а Вам почему то икнулось. Где я заменяю MVC на XML? Но в конструкторы видов и сервисов я действительно передаю xml ноды. Виды легко могли бы менять модель без С если бы не сервер... Так что контролер нужен а значит и MVC.
Можете меня считать демагогом, плотником или каменщиком.

Zebestov 06.08.2013 21:40

Настаиваю на прекращении рассуждений на предмет целесообразности MVC как такового и высказываться все же в рамках названия темы: "Ваша реализация MVC"

namespaces 07.08.2013 05:22

"Ваша реализация MVC" - это типа с нуля создать свое с пересозданием существующих известных фреймворков? Кто по вашему будет на это тратить время, если помимо проекта и архитектуры еще предстоит возня с интерфейсом, дизайном, логикой, тестированием, отладкой приложения?!
Можно было бы скопирнуть сюда свои кастомные классы, если вы имели ввиду только как "Ваше понимание MVC", нежели "Ваша реализация". Т.к. написание фреймворка это не только завернуть все в пакетик SWC и продолжать творить по этому шаблону.
Каждый проект это новый MVC.

ps Ничего дельного не сказал, но ухх как высказался)) полегчало.

Isfet 07.08.2013 08:25

почитав темы про mvc я понял что структура вьювов должна почти зеркально повторять структуру моделей,
но если нажали что-нибудь во вью, а она находится глубоко, а контроллера нет поблизости, передаем событие ближайшему контроллеру, но как этот контроллер может дать своей модели какую именно модель внутри нее нужно изменить(то есть как найти можель которая принадлежит именно этой вью ), вижу два варианта:
1. использовать метки (типо айдишников в БД).
2.все же создавать триаду "на глубине", и тогда контроллер будет знать к какой модели относится вью.

но опять не понятно что делать когда у одного контроллера много одноуровневых вью, и у каждой из них по модели.


также не понятно каким образом удаляется триада во втором случае (2.все же создавать триаду, и тогда контроллер будет знать к какой модели относится вью.)

мне видится такое удаление:

1. вью диспатчит "removeMe",
2. его контроллер ловит событие, и вызывает у модели destruct.
3. модель диспатчит верхней модели "removeModel", так как у верхней модели есть ссылка на нее и ссылку надо удалить.
4. также это "removeModel" ловит вью удаляет слушатели и диспатчит событие для верхней вью, чтобы она ее удалила.
5.контроллер удаляет слушатели и диспатчит событие верхнему контроллеру , чтобы он его удалил(есть ссылка).

просьба строго не судить) я пытаюсь понять суть)

Babylon 07.08.2013 08:41

У каждой модели (ноды) как и вида должен быть id по которому контроллер узнает ее инстанс
Вид рендерится виджетами по модели, а контроллер обрабатывает их взаимодействие посредством событий.

Isfet 07.08.2013 08:54

получается что каждый вью хранит айди модели?
то есть получается порядок действий такой?
1. кликнули на вью,
2. диспатчим кастом событие, в котором передаем айди вью,
3.контроллер находит этот вью по айди
4. вытаскивает из него данные и айди модели
5.говорит модели записать данные во внутреннюю модель по айдишнику

так?

Zebestov 07.08.2013 09:58

Цитата:

Сообщение от namespaces (Сообщение 1142851)
"Ваша реализация MVC" - это типа с нуля создать свое с пересозданием существующих известных фреймворков?

Ни один MVC фреймворк не стоит того, чтобы его пересоздавали.

Цитата:

Сообщение от namespaces (Сообщение 1142851)
Кто по вашему будет на это тратить время…

Ты удивишься :)

Цитата:

Сообщение от Isfet (Сообщение 1142855)
1. вью диспатчит "removeMe",
2. его контроллер ловит событие, и вызывает у модели destruct.
3. модель диспатчит верхней модели "removeModel", так как у верхней модели есть ссылка на нее и ссылку надо удалить.
4. также это "removeModel" ловит вью удаляет слушатели и диспатчит событие для верхней вью, чтобы она ее удалила.
5. контроллер удаляет слушатели и диспатчит событие верхнему контроллеру , чтобы он его удалил(есть ссылка).

Почему View дает модели указание на удаление? Это задача логическая, а не творческая — модель должна решать. Модель приложения так или иначе пришла к тому, чтобы вызвать метод destruct() у нашей модельки. В этом методе следует послать событие DESTRUCT, которое поймает отображение, подписанное на события своей модели. Отображение произведет необходимые процедуры очистки на внутреннем уровне и пошлет родительскому отображению событие REMOVE, чтобы оно, в свою очередь, удалило объект со сцены вообще.

dimarik 07.08.2013 11:01

Цитата:

Сообщение от Babylon (Сообщение 1142828)
Интерфейсы нужны чтобы одна часть системы - ваша понимала другую часть, написанную не вами.

Я второй раз настаиваю, что совместная разработка не имеет отношения к интерфейсам. Прочитайте хотя бы на вики что такое интерфейс в парадигме ООП. Найдите там хоть слово о командной разработке! Все уже до вас придумано, не насаждайте окружающим свои ощущения, ошибочно принимаемые вами за знания. Новичкам это вредно, это их запутывает.

Babylon 07.08.2013 12:45

Цитата:

Сообщение от dimarik (Сообщение 1142862)
Я второй раз настаиваю

dimarik, да делайте, что хотите.

Zebestov 07.08.2013 12:56

Babylon, а по делу что-то ответишь?

Babylon 07.08.2013 12:57

Цитата:

Сообщение от Isfet (Сообщение 1142857)
получается что каждый вью хранит айди модели?
то есть получается порядок действий такой?
1. кликнули на вью,
2. диспатчим кастом событие, в котором передаем айди вью,
3.контроллер находит этот вью по айди
4. вытаскивает из него данные и айди модели
5.говорит модели записать данные во внутреннюю модель по айдишнику

так?

2. Передается только ссылка на объект модели или вида, а вместе с объектом и его id. Вы правы Вид и Модель практически не отличаются. Вид работает с отображаемыми объектами, а модель нет. Вид ничего не знает о методах модели, а модель о методах вида. Но контроллер знает всё.

Isfet 07.08.2013 16:56

Цитата:

Сообщение от Babylon (Сообщение 1142882)
2. Передается только ссылка на объект модели или вида, а вместе с объектом и его id

тоесть так: из вью нижнего уровня диспатчим/бабблим событие до верхней вьюшки, она редиспатчит это событие, сохраняя таргет чтобы контроллер мог поймать низкоуровневую вью и вытащить из нее все что надо(айди, данные и тп), и сказать верхней модели - замени такие-то данные в модели с таким-то айди?

etc 07.08.2013 17:01

Ссылка идёт сразу на модель.

Babylon 07.08.2013 19:02

все виды "равноудалены" от контроллера и доступны по ссылке, но друг с другом могут образовывать некоторую иерархию, в зависимости от задач вашего приложения. В AS3 нет встроенных id для объектов как в объектив с

Zebestov 07.08.2013 19:29

Цитата:

Сообщение от Babylon (Сообщение 1142941)
все виды "равноудалены" от контроллера

Это если контроллер один. Тем не менее в любом MVC контроллеры, равно как и модели с отображениями, зачастую сами выстроены в иерархию.
Но даже в случае одного контроллера иметь прямые ссылки на все виды нецелесообразно.

Babylon 07.08.2013 19:49

Zebestov, пожалуйста расскажите про иерархию контроллеров.


Часовой пояс GMT +4, время: 19:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.