dto是否属于decorator模式?

qnzebej0  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(391)

我在两个不同的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 物体。为此,我们将mapper及其实现声明为:

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 但既然我们提供了Map的实现,我们能说它是decorator模式吗?或者这里有没有其他的设计模式?

cgvd09ve

cgvd09ve1#

它不是一个decorator模式,因为decorator模式
允许动态地将行为添加到单个对象,而不影响来自同一类的其他对象的行为。
由于Map到另一个类,所以它不是同一个类。

相关问题