【问题标题】:UI-centric vs domain-centric data model - pros and cons以 UI 为中心与以领域为中心的数据模型 - 优缺点
【发布时间】:2010-12-03 21:02:30
【问题描述】:

您的数据模型与您的 UI 和域模型的映射有多接近?

如果数据模型有一个 Customer 表、一个 Employee 表等,它可以非常接近域模型。

UI 可能无法如此紧密地反映数据模型 - 例如,可能有多种形式,所有形式都包含客户数据的零碎以及其他杂项数据。在这种情况下,您可以有单独的表来保存来自每个表单的数据。然后可以根据需要在将来组合数据...或者,可以将表单数据直接插入到 Customer 表中,这样数据模型就不会与 UI 很好地关联。

什么证明对你更有效?

【问题讨论】:

    标签: user-interface dns datamodel


    【解决方案1】:

    如果我有一个 RESTful 服务层,那么他们公开的领域模型是什么。在这种情况下,UI(任何特定屏幕)会调用许多这些服务,并从收集的域模型中组成屏幕。在这种情况下,尽管域模型一直冒泡到 UI,但 UI 层会略过必要的数据来构建其特定的屏幕。还有一些关于使用域模型(注释)进行持久性的有趣问题。 我的观点是域模型可以是单一的事实来源。它可以很好地完成承载数据、封装逻辑的工作。我从事的项目有很多样板代码将每个域模型转换为 DTO、VO、DO 和你有的东西。在大多数情况下,其中很多看起来都是不必要的,而且更多是由于习惯造成的。

    【讨论】:

      【解决方案2】:

      我发现将您的域模型映射到您尝试解决的现实世界问题更简洁。

      然后您可以创建视图模型,作为视图所需的所有数据的存储桶。

      如上所述,您的 UI 可以经常更改,但这通常不会改变您正在处理的特定域问题...

      可以在此处找到有关此模式的信息:

      http://blogs.msdn.com/dphill/archive/2009/01/31/the-viewmodel-pattern.aspx

      【讨论】:

      • 同意。这里要说明的重要一点是,有实现模型和用户的心理模型。两者通常彼此相距很远,并且迫使用户将他们的心智模型调整为实现模型会出错。
      【解决方案3】:

      UI 可以根据许多需求进行更改,因此通常最好将数据保存在域模型中,从任何一个 UI 中抽象出来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-19
        • 1970-01-01
        相关资源
        最近更新 更多