3 回答

TA貢獻1795條經(jīng)驗 獲得超7個贊
有些項目的所有數(shù)據(jù)都有兩次。一次作為域?qū)ο?,一次作為?shù)據(jù)傳輸對象。
這種重復(fù)需要付出巨大的代價,因此該體系結(jié)構(gòu)需要從這種分離中獲得巨大的收益才能使其值得。

TA貢獻1871條經(jīng)驗 獲得超13個贊
DTO不是反模式。通過網(wǎng)絡(luò)發(fā)送一些數(shù)據(jù)(例如,通過Ajax調(diào)用發(fā)送到網(wǎng)頁)時,您要確保僅通過發(fā)送目標(biāo)將使用的數(shù)據(jù)來節(jié)省帶寬。同樣,對于表示層來說,以與本機業(yè)務(wù)對象略有不同的格式存儲數(shù)據(jù)通常很方便。
我知道這是一個面向Java的問題,但是在.NET語言中,匿名類型,序列化和LINQ允許即時構(gòu)建DTO,從而減少了設(shè)置和使用它們的開銷。

TA貢獻1789條經(jīng)驗 獲得超8個贊
DTO EJB 3.0中的AntiPattern表示:
在EJB 3.0之前的EJB規(guī)范中,實體Bean具有沉重的性質(zhì),導(dǎo)致使用了諸如數(shù)據(jù)傳輸對象(DTO)之類的設(shè)計模式。DTO成為了輕量級對象(首先應(yīng)該是實體Bean本身),用于跨層發(fā)送數(shù)據(jù)...現(xiàn)在EJB 3.0規(guī)范使Entity Bean模型與普通舊Java對象(POJO)相同。使用這個新的POJO模型,您將不再需要為每個實體或一組實體創(chuàng)建DTO ...如果要跨層發(fā)送EJB 3.0實體,則使它們只需實現(xiàn)java.io.Serialiazable
添加回答
舉報