当前位置: 首页 > 面试题库 >

数据传输对象中的公共字段

张兴旺
2023-03-14
问题内容

在我多年的编程工作中,我经常创建一些类,这些类仅将一些变量与其设置器和获取器组合在一起。我已经看到了这些类型的对象,这些对象称为值对象,域对象或模型对象,具体取决于使用它们的上下文。通用用法最合适的术语似乎是数据传输对象(DTO)。这描述了仅包含访问器和更改器的POJO。

我刚刚编写了一个这样的对象,其中包含大约五十个用于在图表上设置主题参数的字段。现在,我想知道是否应该将这些字段声明为公共字段,而不是生成一百个getter和setter方法。这样做违背了我的编程本能告诉我的一切,但我不能否认这将大大提高代码的可读性并减少类中的样板代码量。

我看到
使用公共字段的唯一原因是,如果我需要对这些字段执行任何形式的验证。如果我们认为类型验证足以满足我的目的,那么在这种情况下使用公共字段是否可以脱离面向对象设计?公共DTO在大批量操作中是否会表现更好?


问题答案:

大多数程序员会默认使用getter / setter来访问私有字段,而不考虑它。但是,像任何对货物狂热的事物一样,最好有意识地做出决定。

使用getter /
setter组合而不是公共字段的主要原因是可以更改定义。因此,如果您的DTO是组件之间接口的一部分,则最好使用吸气剂。如果更改内部工作方式,则可以使吸气剂模仿旧的行为并保持兼容性。

另一个原因是您可以设置只读字段。通常对于DTO来说,只读和不可变是一个不错的选择。

第三个原因可能是您的DTO必须是Javabean,因为您打算在需要它的某些工具中使用它。

如果这些属性都不适合您,则没有理由不使用公共字段。

不过,不要期望性能差异太多:)



 类似资料:
  • 4.2 ABP应用层 - 数据传输对象 数据传输对象(Data Transfer Objects)用于应用层和展现层的数据传输。 展现层传入数据传输对象(DTO)调用一个应用服务方法,接着应用服务通过领域对象执行一些特定的业务逻辑并且返回DTO给展现层。这样展现层和领域层被完全分离开了。在具有良好分层的应用程序中,展现层不会直接使用领域对象(仓库,实体)。 4.2.1 数据传输对象的作用 为每个应

  • 问题内容: 在这种情况下,您具有“传输对象”(仅带有getter / setter的POJO),这些数据通过客户端库传递到您的API,命名传输对象的最佳方法是什么? 在此示例中,您的主类和传输对象都具有名称。它们位于不同的程序包中,但我认为使用相同的名称会造成混淆。是否有关于命名传输对象的最佳实践? 问题答案: 我通常在类名的末尾添加“ DTO”,并将所有DTO放在其自己的包中。在您的示例中,我将

  • bytes Buffer - 发送的内容。 file String - 要上传的文件的路径。 blobUUID String - Blob数据的UUID。通过 ses.getBlobData 方法来接收数据,

  • 本文向大家介绍Vue 通过公共字段,拼接两个对象数组的实例,包括了Vue 通过公共字段,拼接两个对象数组的实例的使用技巧和注意事项,需要的朋友参考一下 前端需要展示两个字段,工资项与工资值。因为后台数据原因,后端是将这两个数据分开返回,这边我需要将这两个数组拼接到一个数据。 直接上代码。 1.HTML部分 2. js部分 3. 效果 以上这篇Vue 通过公共字段,拼接两个对象数组的实例就是小编分享

  • 问题内容: 这是我的对象类: 我将其添加到速度上下文中,如下所示: 但是,在编写模板时,以下内容将不会呈现地址字段(但是,当我将getter添加到Address类时,它可以正常工作) 是否可以通过Velocity访问对象上的公共字段而无需添加吸气剂? 问题答案: 默认不是。您需要配置其他Uberspect实现。

  • 4.3 ABP应用层 - 数据传输对象验证 应用程序的输入首先应该被验证是否有效。输入的数据能够被用户或者其它应用发送。在web应用中,验证通常被实现两次:客户端和服务器端。客户端验证的实现主要用于用户体验。首先,最好是在客户端检验表单并且向用户展示无效的字段。但是,相对于客户端验证,服务器端验证是更重要并且不可缺失的。 服务器端的验证通常是在应用层或者控制器中被实现(通常,所有的服务都是从持久层