2014-11-13 3 views
1

Программное обеспечение Я работаю над использует API, который имеет примерно этой организации: (Вы, возможно, придется прочитать его два раза, чтобы разрешить символы :))Рекурсивный дизайн модели

  • Сценарий представляет собой процесс который содержит набор интервалов (продолжительности) и событий (время).
  • Интервал определяется его начальным и конечным событиями, который определяет время начала и окончания времени (следовательно, его продолжительность). Интервал может содержать произвольное количество процессов (например, сценарий).
  • Событие - это всего лишь момент времени.

События могут быть размещены на графическом изображении для создания сценария.

Как вы можете видеть, эта модель является рекурсивной, поскольку вы можете поместить сценарий в интервал, а другой интервал внутри этого сценария ad infinitum.

Мой вопрос: в модели «view model» - «presenter» - «view», какими должны быть отношения собственности объектов API и объектов модели представления? Должен ли я позволить API управлять владением собственными объектами модели, такими как Event & Interval, или я должен создавать их, когда я создаю экземпляр соответствующих объектов модели представления? Есть ли наилучшая практика?

ответ

1

Вы должны, вероятно, позволить API управлять своими объектами домена, и в вашем проекте отображать эти объекты в пользовательской модели или ViewModel объекты по мере необходимости

Всякий раз, когда работа с ViewModels, попытайтесь вспомнить, что MVVM или MVP является модель для вашего пользовательского интерфейса, а не для бизнес-логики. Выступающие должны вызывать другие классы (которые должны рассматриваться как вне шаблона MVVM/MVP/MVPVM) для выполнения своей бизнес-логики. Это звучит так, как упоминаемый вами API предоставляет множество функций вашего бизнеса; в идеале, ваши модели будут специфичны для вашего приложения, а затем вы соответствующим образом сопоставляете объекты API с объектами модели.

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

В случае сомнений вернитесь к SOLID, особенно принцип единой ответственности.

Надеюсь, я правильно понял вас.

+0

Два месяца назад я не был так уверен, но я следил за этим треком, и программное обеспечение идет неплохо :) –

+0

Очень рад это слышать. –

Смежные вопросы