我最近无意中听到有人说data transfer objects (DTO)是一种反模式。
为什么?有什么替代方案吗?
发布于 2009-09-17 19:54:53
有些项目的所有数据都有两次。一次作为域对象,一次作为数据传输对象。
这种复制有巨大的成本,所以架构需要从这种分离中获得巨大的好处,才值得这样做。
发布于 2009-09-17 20:00:19
DTO不是反模式。当您通过网络发送一些数据(例如,发送到Ajax调用中的网页)时,您希望确保只发送目的地将使用的数据来节省带宽。此外,表示层的数据格式通常与本机业务对象的格式略有不同,这也很方便。
我知道这是一个面向Java语言的问题,但是在.NET语言中,匿名类型、序列化和LINQ允许动态构造DTO,这减少了使用它们的设置和开销。
发布于 2009-09-17 19:54:24
DTO an AntiPattern in EJB 3.0说:
在EJB3.0之前的EJB规范中,实体Beans的重量级特性导致了设计模式的使用,如数据传输对象(DTO)。DTO成为轻量级对象(首先应该是实体bean本身),用于跨层发送数据……现在EJB3.0规范使实体bean模型与普通Java对象(POJO)相同。使用这个新的POJO模型,您将不再需要为每个实体或一组实体创建DTO ...如果您想跨层发送EJB3.0实体,请让它们只实现java.io.Serialiazable
https://stackoverflow.com/questions/1440952
复制相似问题