如何解决DTO 是否属于装饰器模式?
我在两个不同的实体和 DTO 包中定义了实体和 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
但由于我们提供映射的实现,我们可以说它是装饰器模式吗?或者这里是否使用了其他设计模式?
解决方法
它不是装饰器模式,因为是装饰器模式
允许动态地将行为添加到单个对象,而不会影响来自同一类的其他对象的行为。
因为你映射到另一个类,所以它不是同一个类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。