我在两个不同的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模式吗?或者这里有没有其他的设计模式?
1条答案
按热度按时间cgvd09ve1#
它不是一个decorator模式,因为decorator模式
允许动态地将行为添加到单个对象,而不影响来自同一类的其他对象的行为。
由于Map到另一个类,所以它不是同一个类。