复杂的DTO结构



我在SO上的书和文章中读了很多关于DTO的内容,但我不确定我是否做对了。

我们在项目中使用DTO,因此它们几乎只是域对象的属性。因此,我们需要一个复杂的DTO结构。有一些类相互扩展,组合,聚合等等

这个问题比较笼统。

从另一个dto继承dto是正确的,还是在另一个dto中对某个dto进行引用?

从另一个继承DTO是正确的吗

如果他们有共同的财产,为什么不呢?

在DTO中引用另一个DTO

这肯定没有错,请考虑以下内容:

public class UserDto
{
    public string Id { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
    public AddressDto Address { get; set; }
}
public class AddressDto
{
    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
    public string City { get; set; }
}

请记住,DTO只是愚蠢的对象,即它们没有任何行为(除了获取/设置自己的数据)。从体系结构的角度来看,相同的规则适用于DTO,就像它们适用于标准类/对象一样,所以如果可以的话,没有理由不遵循相同的原则。

DTO用于层间通信。

我更喜欢简单的DTO,因为它们主要用于告诉持久层,一般来说是数据访问对象,要存储什么。如果是这样的话,就不要选择复杂的DTO。

如果DTO很复杂(即DTO具有另一个DTO作为属性),则DAO存储数据所需的复杂性更大。这与DAO作为与存储技术解耦的方式的目标相冲突。

因此,如果DTO需要寻址另一个DTO,只需使用字符串id作为属性,并为每个DTO保留一个简单的DAO。处理互连DTO的逻辑应该转到使用DAO的服务应用程序或业务对象。通过这种方式,您可以增加代码的重用。

最新更新