2010-02-12 81 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

相关问题