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

2024-03-19

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


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

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

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

客户和最后五个订单是DTO(优化以避免多次网络调用)

Customer是实体

Money and SKU是值对象

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

值对象模式和数据传输模式之间的区别 的相关文章

  • 用于解析和构建逻辑表达式的 Java 库

    我正在寻找一个 Java 开源库来解析和构建类似 SQL 的表达式 例如评估表达式的有效性 例如 a x or y and b z 另外我想要一个用于构建或扩展表达式的 API 就像是 Expression exp new Expressi
  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • Spring中的ProxyFactoryBean

    有人可以解释一下吗代理工厂Bean http static springsource org spring docs current javadoc api org springframework aop framework ProxyFa
  • 本地开发的 Azure Functions 扩展包版本问题

    我有一个带有队列触发器的 Java 11 Azure 函数 该函数在部署到 Azure 时按预期工作 并正确从定义的服务总线主题中提取消息 但是 运行相同的功能locally除非我回滚版本 否则不起作用Azure Functions 绑定扩
  • 以有效的方式从 Map 中删除多个键?

    我有一个Map
  • 具有 JPA 持久性的 Spring 状态机 - 存储库使用

    我试图弄清楚如何轻松使用 Spring 状态机 包括使用 JPA 进行持久化 这是我正在处理的问题 不兼容的数据类型 工厂和持久性 在程序的某个时刻 我想使用连接到用户的状态机 有用于此目的的存储库 项目spring statemachin
  • 纱线上的火花,连接到资源管理器 /0.0.0.0:8032

    我正在我的开发机器 Mac 上编写 Spark 程序 hadoop的版本是2 6 spark的版本是1 6 2 hadoop集群有3个节点 当然都在linux机器上 我在idea IDE中以spark独立模式运行spark程序 它运行成功
  • 生成 equals 和 hashcode 时忽略属性

    假设我有一个类 Customer public class Customer private String firstName private String lastName private String doNotAddMeToEqual
  • 用于层次结构树角色的 Spring Security / Java EE 解决方案

    我知道 Spring Security 非常适合标准角色和基于权限的授权 我不确定的是这种情况 系统中管理着 10 000 名员工 员工被组织成组织结构图 跨部门的谁向谁报告的树 其中一些员工是用户 这些用户仅被允许访问其职责范围内的员工
  • JUNIT 测试 void 方法

    我有一个充满 void 方法的 java 类 我想进行一些单元测试以获得最大的代码覆盖率 例如我有这个方法 protected static void checkifValidElements int arg1 int arg2 metho
  • 在 Java 中创建 XML 文件的最佳方法是什么?

    我们目前使用 dom4j 来创建 XML 文件 不过 我猜现在有更好的东西了 如果我们使用的是 Java 1 6 或更高版本 那么在编写 XML 文件时最好使用什么类 运行速度最快 使用简单 我不需要构建一个 DOM 然后编写整个 DOM
  • Java 中 JButton 的击键/热键

    最初我使用 JMenu 并建立热键以使用加速器工作 它运行得很好 现在我想在 JButton 中实现相同的行为 但我陷入困境 这是我编写的代码 请分享您的想法 以便我可以走上正确的道路 import javax swing import j
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • 如何使用Gson仅从Json反序列化某些特定字段?

    我有以下 JSON 字符串 channel bvmt initValues data value instrumentIds TN0007250012 TN0007500010 instruments mnemonic ADWYA marc
  • 如何在 O(n) 时间内根据 Map 中的整数值相对于其他值随机选择一个键?

    如果我们有一个Map
  • Errors/BindingResult 参数应在模型属性、@RequestBody 或 @RequestPart 参数之后立即声明

    我通过剖析示例应用程序来自学 Spring 然后到处添加代码来测试我在剖析过程中开发的理论 在测试添加到 Spring 应用程序中的一些代码时 我收到以下错误消息 An Errors BindingResult argument is ex

随机推荐

  • Bower、Grunt 和 zsh:未找到命令:

    我已经安装了 Grunt Bower 我正在使用 ZSH 当我打字时bower help or grunt anything I get zsh command not found bower or zsh command not foun
  • 使用 Qt 更新/渲染游戏对象

    我想知道如何在使用 Qt 时更新和渲染游戏对象 例如 对于典型的游戏 你会有一个事件循环 但 Qt 只是有exec 使用 Qt 更新和渲染游戏对象的正确方法是什么 我该如何做一些事情 比如获取每帧之间的时间来更新我的游戏对象 我是否使用单独
  • 使用scala/java调用存储过程oracle参数数组

    我有这个代码 程序 CREATE OR REPLACE PACKAGE BODY PKG ARRAY AS PROCEDURE PARAAJA BULK P INPUTS IN PARAAJAARRAY IS BEGIN FOR I IN
  • 如何删除(重复)X-Powered-By:JSF/2.0

    就我而言 我有 玻璃鱼 3 1 1 莫贾拉 2 1 3 我可以在网络监听器的 Glassfish 管理控制台中删除 X Powered By 这样它就不会显示长文本 Servlet 3 0 JSP 2 2 GlassFish Server
  • 将带有变量 args (...) 的宏转换为 constexpr 可变参数模板时出现问题

    我尝试根据这个转换这个宏article https stackoverflow com questions 7161624 converting a variadic macro to a variadic template functio
  • 对“pthread_cancel”的未定义引用

    我写了以下内容T与 一起上课pthread 当我使用 g lpthread 编译此类时 它工作正常 但是如果我从另一个类扩展这个类A并一起编译它会返回一个错误 对 pthread cancel 的未定义引用 Code class T pri
  • “docker-compose”命令设置 docker-compose.yml 文件的路径

    阅读帮助docker compose h or 这份官方手册 https docs docker com compose reference overview command options overview and help 会给我们选择
  • 尝试在空对象引用上调用虚拟方法“void android.widget.ListView.setAdapter(android.widget.ListAdapter)”[重复]

    这个问题在这里已经有答案了 我正在尝试在列表视图中显示数据 我当前的代码尝试获取从 myDatabase 类传入的数组 然后在我的 listView 中显示它 但是我得到了一个错误 尝试在空对象引用上调用虚拟方法 void android
  • 如何使用云功能从Firestore删除数据

    我正在结合谷歌的 Firestore 数据库编写云函数 我正在尝试编写递归删除更多数据 我找不到访问和删除数据库其他部分中的数据的语法 我已有的代码如下 exports deleteProject functions firestore d
  • Doctrine2 ,通过多对多属性的计数获取实体顺序

    我有两个实体 Article User 文章与名为 likedByUsers 的用户相关 现在 我想按喜欢的数量排序文章 但是 我不想拥有 numberOfLikes 属性 因为更新它太麻烦了 我有太多文章 100k 无法在 PHP 端进行
  • 如何在c中给蒙版上色

    如何对红色 绿色和蓝色值的 32 位无符号整数进行颜色掩码 是这样的吗 要遮盖的颜色 gt gt 8 这应该会得到你想要的结果 short red color gt gt 16 0xFF short green color gt gt 8
  • 如何在javascript中将pdf文件上传到s3?

    我需要将 pdf 文件从 UI 用 Javascript 编写 上传到 Amazon S3 但我正在尝试将该文件上传到 S3 我收到一些 unicode 格式文本 当我将该文本复制到记事本时 或者说任何其他文本文本编辑器我可以人类可读的文本
  • AutoMapper:“忽略其余的”?

    有没有办法告诉 AutoMapper 忽略除了显式映射的属性之外的所有属性 我有外部 DTO 类 这些类可能会从外部发生更改 并且我希望避免显式指定要忽略的每个属性 因为在尝试将它们映射到我自己的对象中时添加新属性会破坏功能 导致异常 据我
  • MySQL触发器将字段更新为id的值

    我想要一个触发器来对插入的记录执行以下操作 pseudocode if new group id is null set new group id new id else don t touch it end 更清楚地说 假设我有一张包含三
  • 更改连接字符串并在运行时重新加载 app.config

    当我使用此代码更改连接字符串时 它不会重新加载app config在运行时 我希望它能够像我们重新加载一样重新加载app config config ConnectionStrings ConnectionStrings JVVNL NEW
  • Tensorflow 对象检测:ImportError:没有名为 nets 的模块

    我目前正在尝试在 Windows 7 上安装 tensorflow 对象检测应用程序 雇主要求 但距离最后几个步骤都失败了 基本上 当我运行安装测试命令时 出现以下错误 导入错误 没有名为 nets 的模块 我读过一些关于这个主题的解决方案
  • 计算并生成完全平方数

    我需要一些关于如何编写 Python 程序的建议 该程序以列表格式提供前 n 个完全平方数的列表 输出应如下所示 How many squares 5 1 4 9 16 25 这是我到目前为止所拥有的 n int raw input How
  • 如何在 WPF 4.0 中创建发光的 TextBox?

    我正在尝试创建一个文本框 当聚焦时它会发光 到目前为止我看到的所有如何执行此操作的示例都基于外发光位图效果 http msdn microsoft com en us library ms752037 28v vs 90 29 aspx 而
  • 配置更改后通知DataSetChanged

    我正在更改设备配置 更改语言 方向等 后进行一些测试 我注意到在此之后 方法 notifyDataSetChanged 不起作用 动作示例 每次我执行删除 保存等操作时 我都会调用 updateList 当我更改方向或更改方向时 用户单击删
  • 值对象模式和数据传输模式之间的区别

    在什么场景下我可以在n层架构中使用这些设计模式 DTO 是您可以在以下位置使用的对象边界系统的 例如 当您有 SOAP Web 服务并且想要返回响应时 您可以使用 DTO 它比必须通过网络返回的实际 XML 更容易处理 DTO 通常由工具生