在一个图表工具中,形状的x/y位置是域数据的一部分(形状的位置是图的一部分 - 如果没有它,不能绘制图),使用这些x/y坐标并在屏幕上绘制一个形状是表示层的一部分。
我知道一些人认为仅用于显示的数据应该单独保存,但是在我曾经分别保存的每个项目中分别保存的数据,这成为一个巨大的维护和支持的噩梦。
在一个简单的图表工具中(如果该工具只是绘制和编辑图表而没有基于图表的任何奇特处理)就没有业务逻辑,只有绘制和编辑图表的代码(属于演示文稿层)和图数据(即域模型)。
如果没有业务逻辑,通过使用单独的一组对象来进行域和表示,您将不得不复制所有模型数据两次(一次在模型对象中,一次在演示文稿对象中)从业务逻辑与演示分离中获得任何优势(因为没有)。另一方面,如果你确实有一些算法运行在数据上,你可以通过从图形代码中分离图形数据来获得某些东西 - 你可以在算法之外运行算法,你可以有更好的自动化测试等
也如果编写上至少可以共享模型定义和保存/加载代码,如果你从图代码中分离它相同的数据进行操作的另一系统。
所以,让我们总结一下:
所有图表数据模型(包括仅用于演示目的,数据)的一部分。
绘制到屏幕或处理用户输入的任何内容都在表示层(显然)中。
如果这两个覆盖了您的代码和数据,而不是您的应用程序,那么您的应用程序就没有任何“业务逻辑”,并且层间隔可能过大。
如果您有任何代码不符合这两个类别,并且您认为它应该是模型的一部分,那么应该构建两个单独的层。
如果系统之间有代码共享的机会,你应该确保共享代码没有与表示代码混合在一起。
还有最后一个“奖励”要点 - 如果这是一个长期积极开发并且未来增加新功能的项目 - 您可能需要分离UI /数据,以便制作未来的工作更容易 - 你必须决定这个未来的储蓄是否值得现在的额外时间,以及这种分离是否真的有可能在未来有所帮助。
来源
2010-07-11 14:56:53
Nir
我害怕赏金会在没有任何我想要的答案的情况下结束。另一个答案很好,我把它提高了,但它并没有解开我心中的结。您的意见是:绘制形状的代码是演示文稿,形状本身就是域。 此外,随着详细程度的提出,答案是非常值得的赏金。非常感谢您的帮助。 – 2010-07-12 18:28:03