Форум 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=203620)

Котяра 12.10.2013 02:49

Многие паттерны гофа не нужны в ас3, т.к. в ас3 нет ограничений, которые есть в java.
На мой вкус нужно понять следующее:
обёртка-делегат-бридж, стратегия, фабрика, понимание сущности обсервера и модели событий конкретного языка.

СлаваRa 12.10.2013 02:50

Цитата:

Многие паттерны гофа не нужны в ас3
Какие именно?

Котяра 12.10.2013 02:55

Ещё моих любимых ссылок покушать вот вам:
http://habrahabr.ru/post/113128/
http://habrahabr.ru/post/88443/

Dukobpa3 12.10.2013 03:14

Цитата:

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

Если абстрагироваться от ВМ - получаем многопоточность и пуши в коллбеки между потоками.

Akopalipsis 13.10.2013 14:50

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

Добавлено через 24 часа 18 минут
Добавлено -
Когда я читал форум, то у меня сложилось впечатление ( которое сейчас мне кажется некорректным )
что верховный фигурант триады создает подклассы. То есть я трактовал это вот как -
Код AS3:

package 
{
        public class BaseView
        {
 
                public function BaseView(model:Object)
                {
                        //это главная вью ( абстрактный класс )
                }
 
        }
 
}
package
{
        public class View extends BaseView
        {
                private var _model:IModel;
 
                public function View(model:Object)
                {
                        _model = model as IModel;
                        super(_model);
                        //это главная вью приложения
                        var subView:BaseView = new BaseView();
                }
 
        }
 
}
package
{
        public class SubView extends View
        {
                private var _model:ISubModel;
 
                public function SubView(model:Object)
                {
                        _model = model as ISubModel;
                        super(_model);
                        //это субвью
                }
 
        }
 
}

Но как показывает практика, это не правильно, так как модели у все разные и передовая субмодель в супер класс вызывает ошибку. А делать надо наверное -
Код AS3:

package 
{
        public class BaseView
        {
 
                public function BaseView(model:Object)
                {
                        //это главная вью ( абстрактный класс )
                }
 
        }
 
}
package
{
        public class View extends BaseView
        {
                private var _model:IModel;
 
                public function View(model:Object)
                {
                        _model = model as IModel;
                        super(_model);
                        //это главная вью приложения
                        var subView:BaseView = new BaseView();
                }
 
        }
 
}
package
{
        public class SubView extends BaseView
        {
                private var _model:ISubModel;
 
                public function BaseView(model:Object)
                {
                        _model = model as ISubModel;
                        super(_model);
                        //это субвью
                }
 
        }
 
}

То есть наследовать все классы от BaseView...?

Dukobpa3 13.10.2013 14:57

Конечно.
Мне кажется ты не совсем понимаешь суть наследования.
Они могут вообще друг друга не наследовать и никакими родственными связыми не связываться.
Главное чтоб суть сохранялась - контроллер слушает вью и рулит моделью, модель меняет данные и кричит об изменениях, вью слушает модель и меняется согласно того что в модели поменялось плюс умеет кричать о действиях пользовавтеля.

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

Добавлено через 6 минут
И мне кажется тут каша с понятием главной вью.
Ты перепутал родителя в цепочке наследования с родителем на уровне приложения.
Часто и там и там говорят "родитель", но если наследование - то родитель - это суперкласс, от которого мы наследовались(этот вариант не совсем корректен, так как это не родитель, а суперкласс).
А во втором случае - родитель - класс который создает екземпляр текущего класса. Этот вариант правильный. В таком случае кто-то будет главным, и будет создавать своих детей.

И главная вью во всех этих разговорах - подразумевалось что это вью, у которой есть внутри нее еще какие-то вью. Получается некое дерево вьюх, которое всё создается одной главной вью. И вот эту главную вью создает, например главный контроллер. Т.е. для главной вью родителем будет главный контроллер.

Akopalipsis 13.10.2013 15:06

Dukobpa3 так как я сами понимаете глупый, то мне сложно продолжать не получив подтверждение.
Пошёл потихоньку продвигаться дальше. Спасибо!

Babylon 13.10.2013 16:46

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

Akopalipsis 13.10.2013 17:16

Цитата:

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

Babylon 13.10.2013 17:21

MVC можно строить и без них. У вас пока ничего нет, а вы уже обобщаете. Глупо!

Добавлено через 1 минуту
я вам приводил пример с видеоуроками. вы его проигнорировали похоже.


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

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