gpt4 book ai didi

model-view-controller - MVC 模型对象、域对象和 DTO 之间有什么区别

转载 作者:行者123 更新时间:2023-12-03 05:39:51 25 4
gpt4 key购买 nike

MVC 模型对象、域对象和 DTO 之间有什么区别?

我的理解是:

MVC 模型对象:

对要由相应 View 显示的数据进行建模。它可能不会直接映射到域对象,即可能包含来自一个或多个域对象的数据。

  1. 客户端
  2. 可能包含业务逻辑。例如。验证、计算属性等
  3. 没有与持久性相关的方法

域对象:

对问题域中的现实世界对象进行建模的对象,例如预订、客户、订单等。用于保存数据。

  1. 服务器端
  2. 没有业务逻辑

DTO(数据传输对象):

当层处于单独的进程中时,用于在层之间传输数据的对象,例如从数据库到客户端应用程序。在获取与多个域对象对应的数据时,允许跨线路进行单个事务,而不是多个调用。 DTO 仅包含数据和访问器方法,不存在任何逻辑。该数据用于特定的数据库事务,因此它可能会也可能不会直接映射到域对象,因为它可能包含来自一个或多个域对象的数据。

  1. 在服务器端和客户端上使用,因为它在层之间传递
  2. 没有业务逻辑
  3. 没有与持久性相关的方法

所以,问题是:

  1. 以上理解正确吗?我是否遗漏了一些关键点?

  2. 假设模型对象不需要额外的业务逻辑,是否有任何理由不使用域对象作为 MVC 模型?

  3. 假设模型对象不需要额外的业务逻辑,是否有任何理由不使用 DTO 作为 MVC 模型?

最佳答案

域和模型对象本质上是相同的,并且可能包含业务逻辑。根据实现的不同,如果将业务逻辑从模型中删除到服务类中,域和 DTO 对象可能是等效的。

通常,DTO 的一个关键变体是 View 模型,它纯粹用于在域模型和 View 之间传输数据,尽管 View 模型通常可能包含逻辑,尽管这应该是纯粹的 UI 逻辑。

关于model-view-controller - MVC 模型对象、域对象和 DTO 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com