我对 DCO 含义的搜索毫无结果,所以我决定在这里问。在我的 Java 应用程序中,有很多类,如 EmployeeDetailsDto、EmployeeDetailsDao,但最近我也遇到了 EmployeeDetailsDco。有谁知道DCO代表什么?
7 回答
我刚刚和那个曾经记得这代表什么的人交谈过。具有讽刺意味的是,他不再这样做了。这家公司的任何其他人也没有。
我能找到的解释是,它基本上是一个 DTO,但他们想使用 DCO 来区分 Hibernate 使用的 DTO 和外部系统使用的 DCO,在本例中是 LDAP。
所以我相信,正如 Bhushan 所暗示的那样,DCO 的含义实际上可能是 Data Carrying object 或类似的东西,在这种情况下,它确实只是 DTO 的另一个名称。回答接受。谢谢你的时间!我以为 DCO 是开发人员广泛使用的公认首字母缩略词,但事实证明就是这样……抱歉。
编辑
对于那些感兴趣的人来说,答案是数据容器对象。我在公司引起了足够的轰动,所以最终一位同事通过电子邮件向 DCO 术语的本地发起者发送了电子邮件,如果有人仍然想知道,它代表Data Container Object。
我只能说数据携带对象不是DCO的意思,将“数据携带对象”放在谷歌中,它不会返回任何命中。
因此,条款必须是错误的。
好的,尝试谷歌搜索“数据对象 DCO”
并得到了这个结果,这表明 DCO 的意思是“数据更改对象”
我的猜测是 DCO 是一个保存对象数据更改的对象,即“差异”。
重构 Dto 并删除 DTO 后缀。
您可能希望将 Dao 更改为 Store 或类似的东西。
首先,最后没有 Dto/dco 的 EmployeeSetails 显然是一个持有与员工相关的值的值类。如果没有另一个术语,很明显它不是一个实用程序——它应该被称为诸如 EmployeeDetailsUtil/Helper 之类的东西。
您的 dao 应该被称为 EmployeeSetailsStore,因为它描述了它的功能,即 EmployeeSetsils 的存储。将它们放置在何处或放置在何处无关紧要,它们隐藏在您的代码中。如果你真的想要,如果它使用 Hibernate,你可以称它为 HibernateEmploteeDetaileStore 等。您的接口应称为 EmployeeSetailsStore。实现者或此接口将使用接口名称作为开始并将 impl 技术添加到该基本名称。
最后但并非最不重要的一点是,这里的 String 是一个 char 数组的值,但在这种情况下添加 Dto 是丑陋而愚蠢的。
只能使用像 Url 这样众所周知的首字母缩略词。最后,商店永远不会令人困惑,而您提到的所有首字母缩略词并没有使事情变得更清楚,并且在这种情况下引入了 co fusion 和这个涂层时间。
如果您使用我建议的内容来衡量打字,那么您实际上输入的字符更少,一切都会更清晰。毕竟我们都是快速打字员,所以总是以清晰而不是简洁为目标,所以还有一些额外的字符。最后,我们花更多的时间阅读、理解等而不是打字,所以在类名中添加一些额外的字符根本不会降低生产力......
不要吝啬……从一开始就做好。
我从未听说过 DCO,但它是否只是 DTO 的另一个名称?
这可能是命令对象。
我使用 DCO 作为数据转换对象。
例如,您有:
- 用于
dto.User
通过网络传输用户(例如,使用 Jackson 注释并映射到 JSON 接口)和: - 用于
dao.User
将用户存储在数据库中(例如,使用 JPA 注释并映射到具有来自 JSON 传输对象的不同字段和格式的遗留数据库)
您需要在两者之间进行转换。
与其在不属于它们的 DTO 或 DAO 中编写该转换逻辑,不如将它们放在 DCO 中。
所以你有dco.User
:
package com.mycompany.myapp.dco;
// converts between data access objects (DAOs) and data transfer objects (DTOs).
public class User {
com.mycompany.myapp.dao.User toDao(com.mycompany.myapp.dto.User) {
// dto to dao conversion.
}
// could call this method fromDao if that is preferred.
com.mycompany.myapp.dto.User toDto(com.mycompany.myapp.dao.User) {
// dao to dto conversion.
}
}
然后,您可以轻松实现和测试转换,并在整个服务层需要它们的任何地方调用它们。
当您需要在模型和视图模型之间进行转换时,这种模式的另一种用法可能是在 UI 的模型视图视图模型 MVVM架构中。在这种情况下,视图模型与视图绑定,并且可以由用户在 UI 中直接操作进行更改,但模型保持独立,例如当您想要加载或保存更改到磁盘时。在这种情况下,提供数据转换对象(我称之为 DCO)可以帮助在相似事物的两种不同表示之间来回转换。
注意,在这种理解下,DCO 实际上只是一组函数,而不是一个有状态的对象。因此,您可以将其称为 DataConvertor,或者您可以将所有转换函数放在一个工厂类中,用于您需要转换的所有对象的整个域层(如果您愿意)。
这只是我有时会做的事情,不一定是标准。其他人可能会使用 DCO 来代表其他东西。