簡體   English   中英

DTO 是否屬於裝飾器模式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM