Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   Хорошее MVC (http://www.flasher.ru/forum/showthread.php?t=138349)

TanaTiX 09.11.2012 04:31

Sintesis, не стоит относиться к этому посту, как к непреложной истине. Тигра старался как мог, но все мы люди: можем ошибаться, и на всех не угодишь. Но те статьи, что он написал были рождены не одной темой на форуме или статьей на вики. Даже если делать не так, то прочитать, думаю, стоило бы однозначно. Мне вот все покоя дубовый стол не дает :)

Dukobpa3 09.11.2012 15:14

Цитата:

Что-то и мне так кажется, в силу того, что у нас есть такие высокоуровневые классы как Sprite где и View и кусок Controller'а уже вроде как реализованы. Спрайт-то и отображаться может и события рассылать, осталось только модель добавить. Может по этому в начале поста выдумывают всякое?
Нужно учитывать что могут быть всякие композиции типа:
MV-C (Модель и вью в одном классе)
MC-V (модель с контроллером в одном классе)
M-CV (Вью с контроллером в одном классе)

И в таком духе.

Добавлено через 1 минуту
Я там выше говорил: главное четко для себя осознать роль каждого из составляющих М, В, Ц.
А там уже можно делать как больше нравится, главное чтоб самое суть оставалась.

Sintesis 09.11.2012 19:42

Я к тому, что создавая проект в флеш девелоп например - точку входа наследуем от Спрайт и она автоматически у нас становится VC так как наследует и дисплай обжект и ивент диспетчер.

Dukobpa3 09.11.2012 19:46

Диспатч ивента это одельная муть совсем. Каким иначе образом ты подпишешься контроллером на вью. А эта подписка предусмотрена в "академической" модели мвц.

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

У меня вообще контроллеры общаются посредством своего обсервера. Совсем отдельно от событий.

Добавлено через 39 секунд
С таким же понтом можно сказать что и модель тоже контроллер, она же как-то диспатчит вьюхе об изменениях.
Но это будет неверная формулировка.

Sintesis 09.11.2012 22:42

В вьюхе не должно быть условий if? Это к логике относится?

Dukobpa3 09.11.2012 22:56

Я вопроса не понимаю.
Это просто условие.

например:
Код AS3:

if(model.locked) drawLock();
else drawUnlock();


Sintesis 09.11.2012 23:04

Цитата:

Сообщение от Dukobpa3 (Сообщение 1103729)
Я вопроса не понимаю.
Это просто условие.

Ну говорят, что вьюха тупая, а if(){} это уже подумать нужно: "если так - то сделаю это, если не так - то не буду этого делать"

Dukobpa3 09.11.2012 23:28

Вьюха может содержать логику касающуюся отрисовки.
Вьюха не может содержать логику касающуюся математики.

Разница в том что в первом случае от решения вьюхи никого кроме нее не зацепит
Во втором - от решения будет зависеть какая-то цифра которая повлечет за собой последствия.

О таких вещах очень сложно говорить без примеров. Давай конкретные вопросы, а то это всё больше начинает напоминать демагогию.

Sintesis 09.11.2012 23:49

Ага, спасибо, это нужно знать!
Пример такой: вьюшке нужно узнавать на каком этапе сейчас приложение, например если в модели стоит startMenu:Boolean = true; то она отобразит нужные кнопки и нужную графику. Значит можно сделать в вьюшке так:
Код AS3:

if (_model.startMenu) {
                                this.removeChildren();
                                this.addChild(_BGMenu);
                                this.addChild(_startButt);
                              ...
                        }


Dukobpa3 09.11.2012 23:57

Прочти наконец-то тему сначала и до конца!!!
Я это уже раз третий так точно тут же объясняю....


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

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