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

Dukobpa3 03.03.2011 23:39

Вложений: 2
Немного не флешовый вопрос.
Рисую архитектуру сервера на питоне. Прошу поглядеть и поправить.
Заранее спасибо.
Вложение 26134

И второй вариант:
Вложение 26133

Я слегка запутался))

terbooter 04.03.2011 09:50

Про бильярд.
Вьюха которая гоняет шары, это уже полноценный модуль, который я бы тоже строил по архитектуре МВЦ.
То есть есть большое МВЦ - это весь проект клиента. Там команды выполняют бизнес-логику своего уровня (счет, победа, новая игра). И вот одна из вьюх большого МВЦ тоже устроена по схеме МВЦ - это маленькая МВЦ. Там есть своя модель, которая хранит координаты шариков, и свои команды, которые по enter frame гоняют шарики.
Если мы захотим сделать минимэп бильярдного поля - нет проблем, делаем в Большом МВЦ команду, которая будет спрашивать убольшой вьюхи координаты всех шаров. А большая вьюха хранит эти координаты в маленькой модели.

Dukobpa3 04.03.2011 09:54

terbooter, ну вообще тут страниц пять обсуждения мусолили то что каждый элемент триады может в свою очередь быть триадой :)

terbooter 04.03.2011 09:54

Мне очень нравится сравнение конструирования ПО со строительством. (Шаблоны проектирования вначале появились именно в архитектуре зданий=))
Так вот если мы строим город, то применяем некоторый шаблон. У нас есть спальные районы, бизнес-районы, парки отдыха. Если увеличить масштаб, то можно увидеть повторение этого же шаблона - в каждом районе есть столовая, детсад и школа. Если еще увеличить, то в каждой квартире есть спальня, кухня, рабочий кабинет. Опять тот же шаблон.
Так почему в проекте один шаблон ДОЛЖЕН быть применет ТОЛЬКО ОДИН раз?

Добавлено через 4 минуты
Dukobpa3, не сомневаюсь. Я внимательно читаю эту тему, как и все остальные темы в которых я пишу.
Потому и еще раз напомнил, про вложенность. А то про это как то забывается у многих

cr0w312 04.03.2011 15:27

Вот меня сильно интересует вложенность
предположим
Код AS3:

/***********************************************
**    класс главной вьюшки                  **
***********************************************/

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);
        }
    }
 }

так верно или я путаю тёплое с мягким?

Psycho Tiger 04.03.2011 15:35

Dukobpa3, terbooter, фух, вы меня успокоили =) Да, у меня каждый элемент тоже триада. etc мне говорил про самую "большую" структуру приложения, а я больше углублялся именно в "мелкие". Теперь всё укладывается в моё понимание, всем спасибо.

Добавлено через 1 минуту
@cr0w312, да, правильно.
Но лично мне приятней чтобы контроллер создавал контроллер и никто больше.

gloomyBrain 04.03.2011 15:42

я бы так делал
Код AS3:

/***********************************************
**              класс КарКонтроллер          **
***********************************************/

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;
      }
    }
 }

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

cr0w312 04.03.2011 15:45

Цитата:

Сообщение от Psycho Tiger (Сообщение 978027)
@cr0w312, да, правильно.
Но лично мне приятней чтобы контроллер создавал контроллер и никто больше.

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

Psycho Tiger 04.03.2011 15:55

Ага, примерно так.

Zebestov 26.03.2011 15:54

http://ru.wikipedia.org/wiki/Model-View-Controller
Конкретно раздел "Наиболее частые ошибки". Я уже писал здесь ранее, что склоняюсь к тонкой прокладке (Controller) между логикой (Model) и ее отображением (View).


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

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