Где репрезентативные данные размещены в шаблоне MVP или MVC? - PullRequest
0 голосов
/ 30 октября 2018

В шаблоне MVP и MVC вы хотите четко отделить представление от модели.

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

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

Как бы вы структурировали этот материал в проекте? Где хранятся данные «как это должно выглядеть»? Внутри модели, внутри Presenter (отображение) или внутри View (отображение). Может быть, я упускаю что-то важное здесь.

Чтобы уточнить, откуда это происходит:

Предположим, у вас есть объекты, которые представлены в виде значков в списке. Все эти объекты имеют общий супертип, но каждый отличается по деталям и поэтому должен быть представлен разными значками. Более того, возможно, вы реализовали все как общий тип и определили его целое поведение только во время создания или настройки всего во время выполнения, поэтому у вас даже нет способа различать значки для отображения по типу. Таким образом, я бы посчитал, что этим объектам нужен аксессор, такой как «getImage», чтобы получить представление, которое они хотели бы иметь в GUI. Но иметь изображение, чтобы быть частью модели, кажется неправильным.

Чтобы представить общий способ формирования ответа, воображаемый проект может быть структурирован в следующих каталогах:

src/model/
src/view/
src/presenter/

Где будет находиться каждый тип / класс с какими методами?

1 Ответ

0 голосов
/ 30 октября 2018

Как бы вы структурировали этот материал в проекте? Где данные «как должно выглядеть» хранится?

Здесь я использую ViewModel. Вы сопоставляете свой Model с ViewModel и используете ViewModel для представления того, какие свойства отображаются. Вы можете адаптировать ViewModel к:

  • Стиль / css свойство,
  • Свойства комбината,
  • Логика проверки,
  • Изменить способ отображения свойства и многое другое.

Где будет находиться каждый тип / класс с какими методами?

ЦСИ / ViewModel

...