我有许多DTO对象。每个DTO类有方法通用DTO转换器模式
convertDTO(Entity entity)
convertDTOList(List<Entity> entity)
我想用德兴模式为我DTO对象转换。我可以使用哪种设计模式?
推土机架构不错。但我想写一个通用模式。
我有许多DTO对象。每个DTO类有方法通用DTO转换器模式
convertDTO(Entity entity)
convertDTOList(List<Entity> entity)
我想用德兴模式为我DTO对象转换。我可以使用哪种设计模式?
推土机架构不错。但我想写一个通用模式。
有很多不同的解决方案。你可以找到关于它纯粹是你写的讨论在这里 Object Conversion Pattern
我不太清楚你想在这里做什么,而是基于我想说使由实现的接口,所有的DTO,可能具有通用参数。
如果使用Java8,我建议使用DTO域转换模式的建议here
下面的实现示例:
GenericConverter
public interface GenericConverter<I, O> extends Function<I, O> {
default O convert(final I input) {
O output = null;
if (input != null) {
output = this.apply(input);
}
return output;
}
default List<O> convert(final List<I> input) {
List<O> output = new ArrayList<O>();
if (input != null) {
output = input.stream().map(this::apply).collect(toList());
}
return output;
}
}
ConverterDTO
public class AccountCreateRequestConverter implements GenericConverter<AccountCreateRequest, AccountOutput> {
@Override
public AccountOutput apply(AccountCreateRequest input) {
AccountOutput output = new AccountOutput();
output.setEmail(input.getEmail());
output.setName(input.getName());
output.setLastName(input.getLastName());
output.setPassword(input.getPassword());
return output;
}
}
消费者
消费类:
class Consumer {
@Inject
AccountCreateRequestConverter accountCreateInputConverter;
void doSomething() {
service.registerAccount(accountCreateInputConverter.apply(input));
}
}
这种模式来自于易于使用,因为你可以通过一个单一的或实体的名单的实力,其中有可是其他嵌套的DTO使用转换器父类中的专用转换器进行转换。 事情是这样的:
嵌套集合DTO转换器例如
class ParentDTOConverter {
@Inject
ChildDTOConverter childDTOConverter;
void doSomething() {
@Override
public ParentDTOOutput apply(ParentDTOInput input) {
ParentDTOOutput output = new ParentDTOOutput();
output.setChildList(childDTOConverter.convert(input.getChildList()));
}
}
}
模式的存在是解决问题。你想解决什么问题? –