DTO,DAO和DCO。什么是DCO?

时间:2009-04-17 09:20:22

标签: java terminology acronym

我对DCO意义的探索是徒劳的,所以我决定在这里问一下。在我的Java应用程序中,有许多类,如EmployeeDetailsDto,EmployeeDetailsDao,但最近我也遇到了EmployeeDetailsDco。有谁知道DCO代表什么?

7 个答案:

答案 0 :(得分:21)

  

DTO = Data Transfer Object

     

DAO = Data Access Object

     

DCO =   Dynamically Configurable Object

来自article

动态可配置对象(DCO)

一个对象,其实现可以在运行后逐步改变

  • 由界面元素
  • 组成
  • 公共职能
  • 私人职能
  • 私人数据以及所有访问者功能
  • 成员函数支持对界面元素的增量更改
  • 添加,删除或更改

答案 1 :(得分:4)

我刚跟那个曾经记得这个代表的人说过话。他不再那么具有讽刺意味。这家公司的其他人也没有。

我能找到的解释是,它基本上是一个DTO,但他们想用DCO来区分Hibernate使用的DTO和外部系统使用的DCO,在这种情况下是LDAP。

所以我相信DCO的意义确实可以像Bhushan所建议的那样,数据携带对象等,在这种情况下,它确实只是DTO的另一个名称。接受了答案。谢谢你的时间!我认为DCO是开发人员广泛使用的一个公认的首字母缩略词,但事实证明这只是...抱歉。

修改


答案是数据容器对象,对于那些感兴趣的人。我在公司引起了足够的轰动,所以最终一位同事通过电子邮件向DCO术语的本地发起人发送电子邮件,如果有人仍在关注,那么它代表数据容器对象

答案 2 :(得分:1)

重构Dtos并删除DTO后缀。

您可能想要将Dao更改为Store或类似的东西。

首先,没有Dto / dco的EmployeeSetails显然是一个值类,其中包含与员工相关的值。没有另一个术语,很明显它不是一个实用程序 - 应该被称为像EmployeeDetailsUtil / Helper等。

你的dao应该被称为EmployeeSetailsS​​tore,因为它描述了它的功能是EmployeeSetsils的存储。放置它们的方式和位置无关紧要,它们隐藏在您的代码中。如果你真的想要你可以把它称为HibernateEmploteeDetaileStore等,如果它使用Hibernate。您的界面应该称为EmployeeSetailsS​​tore。实现者或此接口将使用接口名称作为开始,并将impl技术添加到该基本名称。

最后但并非最不重要的是String这里是一个char数组的值,但在这种情况下添加Dto是丑陋和愚蠢的。

只应该使用像Url这样真正众所周知的首字母缩略词。最后,商店永远不会让人感到困惑,而你提到的所有首字母缩略词都没有让事情更清晰,在这种情况下引入了共融合和涂层时间。

如果你使用我建议的方式测量打字,你实际输入的字符越少,一切都越清晰。在我们都是快速打字机之后,总是瞄准清晰而不是简洁,所以还有一些额外的角色。最后我们花了更多的时间阅读,理解等而不是打字,所以一个类名中的一些额外的字符不会降低生产力......

不要吝啬......从一开始就做好。

答案 3 :(得分:1)

我只能说数据承载对象不是DCO的意思,在谷歌中放置“数据承载对象”并且它不会返回任何命中。

因此这些术语必须是错误的。

好的,试过google搜索“Data Objects DCO”

得到了这个result,这表明DCO意味着“数据变更对象”

我的猜测是DCO是一个对象,它保存对象数据的变化,即“差异”。

答案 4 :(得分:0)

我从来没有听说过DCO,但是数据携带对象只是DTO的另一个名字吗?

答案 5 :(得分:0)

这可能是命令对象。

答案 6 :(得分:0)

我将DCO用作数据转换对象。

例如,您有:

  1. 一个dto.User,用于通过网络传输用户(例如,用Jackson注释并映射到JSON接口)和
  2. 一个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的model view view-model MVVM体系结构中。在这种情况下,视图模型是绑定视图的,可以由用户在UI中直接对其进行更改,但是模型保持分离,例如,要加载或保存对磁盘的更改时。在这种情况下,提供数据转换对象或我称之为DCO的对象可以帮助在相似事物的两个不同表示形式之间来回转换。

请注意,根据这种理解,DCO实际上只是一组功能而不是有状态的对象。因此,您可以将其称为DataConvertor,也可以将所有转换函数放在一个工厂类中,用于所有需要转换的对象的整个域层(如果需要)。

这只是我有时做的事情,不一定是一种标准。其他人可能会使用DCO代表其他东西。