前言
在这篇文章中,我们将讨论 Java / J2EE项目中最常用的 Converter Design Pattern。由于Java8 功能不仅提供了相应类型之间的通用双向转换方式,而且还提供了转换相同类型对象集合的常用方法,从而将样板代码减少到绝对最小值。我们使用Java8 功能编写了此模式的源代码。
目的
转换器设计模式的目的是为相应类型之间的双向转换提供一种通用的方式,允许类型无需彼此了解的简洁的实现。此外,转换器设计模式引入了双向收集映射,将样板代码减少到最小。
源代码
转换器设计模式是一种行为设计模式,允许在相应类型(如DTO和逻辑同构类型的域表示)之间进行双向转换。此外,该模式还引入了一种在类型之间转换对象集合的通用方法。
类图
让我们根据上面的类图编写源代码。
在本例中,我们将把customerd转换为customer实体,反之亦然,我们还将在类型之间转换对象集合。
步骤1:让我们创建一个通用转换器。
public abstract class Converter {
private final Function fromDto;
private final Function fromEntity;
/**
* @param fromDto
* Function that converts given dto entity into the domain
* entity.
* @param fromEntity
* Function that converts given domain entity into the dto
* entity.
*/
public Converter(final Function fromDto, final Function fromEntity) {
this.fromDto = fromDto;
this.fromEntity = fromEntity;
}
/**
* @param customerDto
* DTO entity
* @return The domain representation - the result of the converting function
* application on dto entity.
*/
public final C convertFromDto(final T customerDto) {
return fromDto.apply(customerDto);
}
/**