java - 值对象模式和数据传输模式之间的区别

标签 java design-patterns value-objects data-transfer-objects

在什么情况下我可以在 n 层架构中使用这些设计模式?

最佳答案

DTO 是您可以在系统的边界 使用的对象。例如,当您有一个 SOAP Web 服务并且您想要返回响应时,您可以使用 DTO。它比必须通过网络返回的实际 XML 更容易处理。 DTO 通常由工具生成,例如基于 WSDL。 DTO 通常根据服务消费者的需求量身定制,并且会受到性能要求的影响。

另一方面,值对象存在于系统的核心中。它捕获业务逻辑片段和格式规则。它使您的代码更加类型安全和表现力。它还解决了“原始痴迷”反模式问题。很好的例子是使用类“SocialSecurityNumber”而不是字符串。或金钱而不是小数。这些对象应该是不可变的,这样它们看起来更像原语,并且可以在不同线程之间轻松共享。

例如在假设的“客户订单”系统中:

CustomerAndLastFiveOrders 是 DTO(经过优化以避免多次网络调用)

客户是实体

MoneySKU 是 Value 对象

关于java - 值对象模式和数据传输模式之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986032/

相关文章:

python - Python 中用于实现惰性 getter 的正确模式是什么?

c++ - CRTP、cpp 文件中的前向声明和模板

c# - EF Core 和 DDD : Store ValueObjects in the same table as Entities, 也使用参数化构造函数来设置实体的属性值

Golang 和 DDD 域建模

java - 为 Java 的 lambda 体提供 this 关键字会出现什么问题?

java - 重复某件事直到成功,但最多 3 次

Java:如何在一定次数的迭代后暂停输出,直到按下一个键

java - 如何避免实现所有方法

design-patterns - Scala 中的访问者模式