我在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的服务应用程序或业务对象。通过这种方式,您可以增加代码的重用。