Data transfer object
A data transfer object(DTO) is an object that carries data between two process. The difference between data transfer and business objects or data access objects is that a DTO does not have any behavior except for storage and retrieval of its own data(mutators and accesssors).DTOs are simple objects that should not contain any business logic that would require testing.
DTO 和 MO(Model Object)与 BO(Business Object)的不同之处在于DTO 没有任何业务行为(贫血模式)只作为数据的存储。
表现层于应用层之间是通过 DTO 来进行交互的,数据传输对象是没有行为的 POCO 对象,他的目的是为了对领域对象进行数据封装,实现层与层之间的数据传递。
DTO 本身不是业务对象,他是根据 UI 需求进行设计的。简单来说 Model 面向业务,我们是通过业务来定义 Model 的。而 DTO 是面向 UI,通过 UI 的需求来定义的,通过 DTO 我们实现了表现层与 Model 层之间的解耦,表现层不引用 Model。如果开发过程中我们的模型变了,而界面没变,我们只需改 Model 而不需要去改动表现层。
DTO 说,由于对任何远程接口的每次调用都是昂贵的,因此对每个调用的响应应带来尽可能多的数据。因此,如果需要多个请求来携带特定任务的数据,则可以将要携带的数据合并到 DTO 中,以便只有一个请求可以携带所有必需的数据。
示例代码:
export class SetReferrerRewardRequestDto {
@IsOptional()
@IsNumber()
referrerRewardType?: number;
@IsOptional()
@IsString()
coinsEarn?: string;
@IsOptional()
@IsNumber()
maxRefereeUser?: number;
}