В инструменте построения диаграмм положение x / y фигуры является частью данных домена (расположение фигур является частью диаграммы - вы не можете нарисовать диаграмму без нее), код, который использует эти x / yкоординаты и рисование фигуры на экране является частью уровня представления.
Я знаю, что некоторые люди думают, что данные, которые используются только для отображения, должны сохраняться отдельно, но в каждом проекте, над которым я когда-либо работал над этимСохраненные данные отдельно, это оказалось огромным кошмаром обслуживания и поддержки.
В простом инструменте построения диаграмм (если инструмент просто рисует и редактирует диаграмму без какой-либо сложной обработки на основе диаграммы), бизнес-логики не существует.есть только код, который рисует и редактирует диаграмму (которая относится к уровню представления) и данные диаграммы (то есть модель предметной области).
Если нет бизнес-логики, используя отдельный наборобъекты для домена и презентации, вам придется дублировать все данные модели дважды (один раз в моделиобъекты и один раз в объектах презентации), и вы не получите никаких преимуществ от отделения бизнес-логики от презентации (потому что ее нет).
С другой стороны, если у вас есть некоторые алгоритмывы работаете с данными, которые вы можете получить, отделяя графические данные от кода чертежа - вы можете запустить алгоритм вне инструмента, у вас могут быть более качественные автоматизированные тесты и т. д.
также, если вы напишите другойВ системе, работающей с теми же данными, вы можете по крайней мере поделиться определением модели и сохранить / загрузить код, если отделите его от кода чертежа.
Итак, подведем итоги:
Все данные диаграммы являются частью модели (включая данные, используемые только в целях представления).
Все, что выводится на экран или обрабатывает ввод пользователя, находится на уровне представления (очевидно,).
Если эти два охватывают весь ваш код и данные, то у вашего приложения нет «бизнес-логики» и т. Д.Это разделение, вероятно, излишне.
Если у вас есть какой-либо код, который не вписывается в эти две категории, и вы думаете, что он должен быть частью модели, чем вы должны построить два отдельных уровня.
Если есть возможность совместного использования кода между системами, убедитесь, что общий код не смешан с кодом презентации.
И последнее «бонусное» замечание - если это проект, который, вероятно, будет в активной разработке в течение длительного времени с новыми функциями, добавленными в будущем, - вы, возможно, захотите разделить пользовательский интерфейс / данные в любом случае, чтобы облегчить будущую работу - выЯ должен решить, стоит ли эта будущая экономия дополнительного времени сейчас и действительно ли это разделение поможет в будущем.