Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Системный анализ, проектирование и UML > Нужен совет по правильному использованию MVC - пат


Автор: kalexi 8.10.2013, 13:27
Есть вопрос: необходимо реализовать на основе шаблона MVC следующую систему отображения данных (выводиться будет в браузере в canvas).

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

---------------------------------------------------------------------------------------------------------------------------------------
ДИЗАЙНЕР - основа для загрузки, хранения и отображения содержимого
БЛОК - собственно блок в схеме, должен реагировать на приход сообщения о наведении на него мыши

Предполагаемая мною архетектура:

МОДЕЛЬ-ДИЗАЙНЕРА:
    * Хранение "Моделей-Блоков" (Описаны ниже)

ПРЕДСТАВЛЕНИЕ-ДИЗАЙНЕРА:
    * Создание блока отображение на html-странице (canvas)
    * Отслеживание события перемещения мыши внутри canvas (средствами браузера)
    * Хранение "Обсервера-Дизайнера" для оповещения об изменениях координат мыши полученных из предыдущего пункта

КОНТРОЛЛЕР-ДИЗАЙНЕРА:
    * Загрузка данных и создание на их основе массива связей "Модель-Представление-Контроллер-Блоков" и заполнения ими своей Модели

---------------------------------------------------------------------------------------------------------------------------------------

МОДЕЛЬ-БЛОК:
    * Хранение своих данных (имя, координаты, связи) и доступ к ним
    * Хранение информации о выделении блока (при наведении мыши)
    * Хранение "Обсервера-Блока" для оповещения об изменении данных в Модели

ПРЕДСТАВЛЕНИЕ-БЛОК:
    * Слушание "Обсервера-Блока" из своей модели и вызов функции отрисовки
    * Функция отрисовки блока
 
КОНТРОЛЛЕР-БЛОК:
    * Слушание событий изменения координат мыши из "Представления-Дизайнера"
 
 ---------------------------------------------------------------------------------------------------------------------------------------
 
ПЛАН РАБОТЫ СИСТЕМЫ:
    * Создание "Представления-Дизайнера"
        * Создание "Представлением-Дизайнера" блока Canvas на HTML странице
        * Создание Обсервера для оповещения об изменении координат мыши
        * Добавление слушателя для элемента Canvas о перемещении мыши и вешание на него отправки событий "Обсервера-Дизайнера"
    * Создание "Модели-Дизайнера"
    * Создание "Контроллера-Дизайнера"
        * Загрузка данных, и создание на их основе массива связок "Моделей-Представлениий-Контроллеров-Блоков"
        * Привязка слушателя в каждом "Контроллере-Блоке" к событию "Обсервера-Дизайнера" из "Представления-Дизайнера" о перемещении мыши
        
Таким образом при изменении положения курсора происходит:
    * Событие от Canvas передается в слушатель в "Представлении-Дизайнера" и отдается на распространении Обсервером
    * "Контроллеры блоков" получают событие с Обсервера и проверяют находится ли он над ними
    * Если один из "Контроллеров-Блоков" определяет, что переданные координаты над ним, то он меняет свою Модель
    * Его модель в свою очередь отправляет событие об изменении своим Обсервером для своего Представления
    * "Представление-Блока" на который приходит сообщение об изменении Модели выполняет функцию отрисовки

 ---------------------------------------------------------------------------------------------------------------------------------------
 
 Собственно хочется узнать правильно ли я понимаю как его реализовать, есть какие-то предложения?
 Большое спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)