在什么情况下我可以在 n 层架构中使用这些设计模式?
最佳答案
DTO 是您可以在系统的边界 使用的对象。例如,当您有一个 SOAP Web 服务并且您想要返回响应时,您可以使用 DTO。它比必须通过网络返回的实际 XML 更容易处理。 DTO 通常由工具生成,例如基于 WSDL。 DTO 通常根据服务消费者的需求量身定制,并且会受到性能要求的影响。
另一方面,值对象存在于系统的核心中。它捕获业务逻辑片段和格式规则。它使您的代码更加类型安全和表现力。它还解决了“原始痴迷”反模式问题。很好的例子是使用类“SocialSecurityNumber”而不是字符串。或金钱而不是小数。这些对象应该是不可变的,这样它们看起来更像原语,并且可以在不同线程之间轻松共享。
例如在假设的“客户订单”系统中:
CustomerAndLastFiveOrders 是 DTO(经过优化以避免多次网络调用)
客户是实体
Money 和 SKU 是 Value 对象
关于java - 值对象模式和数据传输模式之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986032/