[英]Does DTOs comes under decorator pattern?
我在兩個不同的 Entity 和 DTO 包中定義了 Entity 和 DTO 類:
@Entity
@Table(name="Foo", schema="REF_DATA")
public class Foo extends BaseEntity {
private Long fooId;
private String fooName;
}
public class FooDto extends BaseDto {
private Long fooId;
private String fooName;
}
在向用戶返回值時,我們返回的是DTOs
而不是Entity
對象。 為此,我們將映射器及其實現聲明為:
public interface DomainToDtoMapper<E extends BaseEntity, D extends BaseDto> {
D mapDomainToDto(E domain);
}
public class FooDomainToDtoMapper implements DomainToDtoMapper<Foo, FooDto> {
@Override
public FooDto mapDomainToDto(Foo domain) {
FooDto fooDto = new FooDto();
FooDto.setfooId(domain.getfooId());
FooDto.setfooName(domain.getfooName());
return fooDto;
}
}
獲取服務層中所有Foo
對象調用的列表如下所示:
@Override
public List<FooDto> getAllFoo() {
return fooRepository.findAll().stream()
.map(FooEntityDomainToDtoMapper::mapDomainToDto) // mapping entity to dto
.collect(Collectors.toList());
}
我的問題是我們在這里使用Decorator pattern
嗎? 我知道有Data Transfer Object Pattern
,但由於我們提供映射實現,我們可以說它是裝飾器模式嗎? 還是這里使用了任何其他設計模式?
它不是裝飾器模式,因為裝飾器模式
允許將行為動態添加到單個 object 中,而不會影響來自同一 class的其他對象的行為。
由於您從 map 到另一個 class,因此它與 class 不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.