首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以UI为中心的应用程序上的分离表示

以UI为中心的应用程序上的分离表示
EN

Stack Overflow用户
提问于 2010-06-28 11:08:32
回答 3查看 155关注 0票数 0

我很难为这种应用程序找出正确的架构:它是一个图表应用程序,类似于MS。这些图表用于生成传递给另一个应用程序的数据。

在设计应用程序时,我一直试图使用分层,但现在我无法决定如何做到这一点,因为数据与表示耦合得如此紧密。例如,我的画布中的某个对象有一个(X,Y)数据,该数据仅用于表示目的,但必须像域数据一样存储。

我在哪里搞错了?我很确定我从错误的角度看这个,但我找不到正确的那个。

再次感谢!

更新:

我还意识到,在这种情况下,也许我不应该将UI与域分离。如果是这样的话,请为我提供一些合理的何时应用分离和何时不适用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-11 14:56:53

在图表工具中,形状的x/y位置是域数据的一部分(形状的位置是图表的一部分--没有它就不能绘制图表),使用这些x/y坐标并在屏幕上绘制形状的代码是表示层的一部分。

我知道有些人认为只用于显示的数据应该单独保存,但在我曾经单独处理过的每个项目中,这都是一个巨大的维护和支持噩梦。

在一个简单的图表工具中(如果工具只是绘制和编辑图表,而没有基于图表的任何花哨处理),就没有业务逻辑,只有绘制和编辑图表(属于表示层)和图表数据(即域模型)的代码。

如果没有业务逻辑,通过为域和表示使用一组单独的对象,您将不得不两次复制所有模型数据(一次在模型对象中,一次在表示对象中),并且将业务逻辑与演示文稿分离没有任何好处(因为没有)。

另一方面,如果您有一些算法运行在数据上,您可以通过将图形数据与绘图代码分离来获得一些好处--您可以在工具之外运行该算法,您可以进行更好的自动化测试,等等。

另外,如果您编写了另一个对相同数据进行操作的系统,那么如果您将模型定义与绘图代码分离,您至少可以共享模型定义和保存/加载代码。

那么,让我们总结一下:

所有关系图数据都是模型的一部分(包括仅用于绘制屏幕或处理用户输入的表示purposes).

  • Anything的数据在表示层(obviously).

  • If中),这两个数据覆盖了您的所有代码和数据,应用程序没有任何“业务逻辑”,并且层分离可能是过度的。如果您有任何不适合这两个类别的代码,并且您认为它应该是模型的一部分,而不是构建两个单独的层。

< code >H 19If系统之间有任何代码共享的机会,您应该确保共享代码不与表示代码混为一谈。

  • 和最后一个“额外”点--如果这是一个可能在很长一段时间内正在积极开发并在将来添加了新功能的项目--您可能希望分离UI/数据,以使将来的工作更容易--您必须决定这种未来的节省是否值得现在的额外时间,以及这种分离是否真的有可能在未来有所帮助。
票数 2
EN

Stack Overflow用户

发布于 2010-07-06 21:57:22

我认为你需要确保你保持的内容和方式是分开的。您正在显示的是抽象的、一组坐标、形状类型。你如何显示它是非常具体的。我要确保域模型纯粹处理什么,视图层唯一地处理如何处理。但是,如果不了解更多关于应用程序的信息,就很难深入了解细节。

票数 1
EN

Stack Overflow用户

发布于 2010-06-28 11:23:08

您可以尝试实现某种视图模型,它保存了对象的当前布局。这样,x/y值和对象的id一起存储在布局文件中,而纯模型数据则存储在其他地方。

也许这有点帮助,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3131810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档