2010-02-12 97 views
6

DTO是否可以接受基於DTO數據返回派生值的實例方法?或者DTO應該是沒有附加方法的純數據容器(除了getter/setter)?DTO可以有返回派生值的實例方法嗎?

我的純粹主義者說,商業邏輯很容易陷入這種方法。但是,如果(例如)DTO是跨應用程序層共享的,那麼在DTO上可能有這樣的方法。

您對此有何看法?有沒有可以接受的情況,或者是否應該避免這種情況?爲什麼/爲什麼不呢?

+0

好問題,我正要問! – andy 2010-05-11 01:06:15

回答

6

DTO不應該具有行爲,它們僅僅是用於在進程邊界之間傳輸數據的容器,並且應該僅由setter/getters組成。

應該避免不惜一切代價,否則將被解釋爲DTO模式的誤用。

+2

截至去年爲止,我看過的大多數最佳實踐書都建議不要使用DTO。 – Woot4Moo 2010-02-12 22:11:14

+0

這個問題是關於DTO模式的特定問題,而不是它是否應該使用。 DTO的問題是它在很多情況下被誤用,例如沒有進程邊界!這是它出現的原因,從遠程過程彙總數據以節省昂貴的往返行程。 – David 2010-02-12 22:27:12

+0

我應該在DTO中使用@override compareTo還是不推薦?爲了這個目的,最好使用一個包裝器? – 2016-02-08 12:06:34

相關問題