在绘图工具中,形状的 x/y 位置是域数据的一部分(形状的位置是图表的一部分 - 没有它就无法绘制图表),使用这些 x/y 坐标并绘制的代码屏幕上的形状是表示层的一部分。
我知道有些人认为仅用于显示的数据应该单独保存,但在我曾经处理过的每个项目中,单独保存的数据变成了巨大的维护和支持噩梦。
在一个简单的图表工具中(如果工具只是绘制和编辑图表而没有基于图表进行任何花哨的处理)没有业务逻辑,只有绘制和编辑图表的代码(属于表示层)和图数据(即领域模型)。
如果没有业务逻辑,通过对域和表示使用单独的一组对象,您将不得不复制所有模型数据两次(一次在模型对象中,一次在表示对象中)并且您不会获得任何优势将业务逻辑与表示分离(因为没有)。
另一方面,如果您确实有一些算法可以在数据上运行,那么您可以通过将图形数据与绘图代码分离来获得一些收益——您可以在工具之外运行算法,您可以进行更好的自动化测试等。
此外,如果您编写另一个对相同数据进行操作的系统,如果您将其与绘图代码分开,您至少可以共享模型定义和保存/加载代码。
所以,让我们总结一下:
所有图表数据都是模型的一部分(包括仅用于演示目的的数据)。
任何绘制到屏幕或处理用户输入的东西都在表示层中(显然)。
如果这两个覆盖了您的所有代码和数据,那么您的应用程序就没有任何“业务逻辑”,并且层分离可能是多余的。
如果您有任何代码不属于这两个类别,并且您认为它应该是模型的一部分,那么您应该构建两个单独的层。
如果系统之间有任何代码共享的机会,您应该确保共享代码没有与演示代码混合。
最后一个“奖励”点——如果这是一个很可能在很长一段时间内积极开发并在未来添加新功能的项目——你可能想要分离 UI/数据只是为了让未来的工作更容易——你必须决定这种未来的节省是否值得现在额外的时间,以及这种分离是否真的有可能在未来有所帮助。