问题

我最近听到人们说250502388(DTO)是反对模式。

为什么?有哪些替代方案?


#1 热门回答(110 赞)

DTO不是反模式。当你通过网络发送一些数据(例如,通过Ajax调用中的网页)时,你希望通过仅发送目标将使用的数据来确保节省带宽。此外,表示层通常方便地使数据具有与本机业务对象略微不同的格式。

我知道这是一个面向Java的问题,但在.NET语言中,匿名类型,序列化和LINQ允许在运行中构建DTO,这减少了使用它们的设置和开销。


#2 热门回答(105 赞)

有些项目的所有数据都是两次.一旦作为域对象,一次作为数据传输对象。

这个复制具有巨大的成本,因此该架构需要从这种分离中获得巨大的好处才值得。


#3 热门回答(22 赞)

DTO an AntiPattern in EJB 3.0says:

EJB 3.0之前的EJB规范中实体Bean的重量级特性导致使用数据传输对象(DTO)等设计模式。 DTO成为轻量级对象(它本身应该是实体bean本身),用于跨层发送数据......现在EJB 3.0规范使Entity bean模型与Plain old Java对象(PO​​JO)相同。使用这个新的POJO模型,你将不再需要为每个实体或一组实体创建DTO ...如果要跨层发送EJB 3.0实体,则只需实现java.io.Serialiazable


原文链接