对象什么时候有资格成为DTO?

时间:2010-09-02 15:07:24

标签: jvm design-patterns dto

DTO(数据传输对象)是用于在应用程序的多个子系统之间传输信息的对象,通常由网络或进程边界分隔。这是我的理解。

但是,从Java的角度来看,子系统/模块是否必须位于不同的JVM实例上,因为它们之间使用的对象才有资格作为DTO? (我相信在子系统之间在模块化和功能方面对架构进行重大划分就足够了。)说什么?

另外,考虑到架构的 SAME层/层中的多个模块交换的对象,这些对象是否有资格成为DTO?层级分离是强制性的吗?

提前致谢。

此致

Nagendra U M

1 个答案:

答案 0 :(得分:3)

因为在层之间传输对象需要某种序列化,所以它被认为是DTO。在层之间传送对象通常通过使用域实体来完成,因此不需要序列化。

因此,您的DTO通常不具有仅行为属性来保存数据。

一点注意事项:当你的实体没有行为,只有数据时,DTO经常被误认为是贫血对象。或者当对象仅用于将数据传入和传出方法或类然后消失时的poltergeist对象。

有时您的数据持久性机制要求您实现或继承您不希望耦合到域层的接口或类,因此您创建继承或实现接口/类并将数据传输到这些类的对象坚持不懈。

class Person{
public string Name {get;set;}
public int Age {get;set;}

public void Validate(){}
public void DoSomething(){}
}



public class PersonDTO : TableServiceContext
{
public const string ContactTableName = "PersonTable"

public string Name {get;set;}
public int Age {get;set;}

}

你通常会有一个班级来组装和拆卸这些物体。