【发布时间】:2010-01-28 12:45:27
【问题描述】:
将基本 setter 和 getter 以外的功能放入 DTO 是否合适?
【问题讨论】:
标签: language-agnostic design-patterns dto
将基本 setter 和 getter 以外的功能放入 DTO 是否合适?
【问题讨论】:
标签: language-agnostic design-patterns dto
好吧,在许多情况下,您可能需要一些序列化代码(对于您的序列化程序 API 要求的任何序列化接口 - 像 .NET 中的 IXmlSerializable / ISerializable),但我想这不是您想要的意思是……
这真的取决于场景。如果您有一个足够简单的对象模型允许您使用您的域模型进行序列化,那么对于小型项目,将其拆分可能几乎没有什么好处 - 关注点分离问题?大概。会造成长期的痛苦吗?可能不会(至少,如果您使用基于合同的序列化程序,则不会,因此您可以在没有任何人注意的情况下交换它)。
对于更复杂的模型,您通常需要一个单独的 DTO 模型到域模型 - 在这种情况下,您可能需要在某个地方放置域和 DTO 之间的转换逻辑(方法/运算符/等) - 所以 可能存在于其中,但如果您 有 有一个单独的 DTO,则不太可能有很多 附加 逻辑 - 该逻辑主要属于域模型和其他商务舱。
【讨论】:
根据定义,DTO 没有任何行为,除了它的数据访问器。如果您需要其中的一些逻辑,则可能需要重构您的模型。
【讨论】:
Candy 作为我的 ASP.net webmethod 的参数。我不能给他加一个SaveToDb方法吗?最佳做法是什么?更喜欢组合而不是继承?