【发布时间】:2021-04-15 14:07:51
【问题描述】:
我正在用 java 编写一个库,我需要将一个模型转换(映射)到另一个模型,反之亦然。我所做的是实现一个具有 2 个泛型类型的抽象转换器类,包含 convertTo 和 convertFrom 方法,并从中扩展了我的转换器。
public abstract class TypeConverter<MyType, OtherLibType> {
private final Function<MyType, OtherLibType> fromMyType;
private final Function<OtherLibType, MyType> fromOtherLibType;
public TypeConverter(final Function<MyType, OtherLibType> fromMyType,
final Function<OtherLibType, MyType> fromOtherLibType
) {
this.fromMyType = fromMyType;
this.fromOtherLibType = fromOtherLibType;
}
public final OtherLibType convertFromMyType(final MyType myType) {
return fromMyType.apply(myType);
}
public final MyType convertFromJspritType(final OtherLibType otherLibType) {
return fromOtherLibType.apply(otherLibType);
}
}
但对于特定的实现,我可能还需要其他对象进行转换,我不知道实现这些东西的最佳实践是什么。我考虑过适配器和外观,但它们似乎不符合我的要求。有没有我可以使用的设计模式?提前谢谢你。
【问题讨论】:
-
我认为你真的应该把它声明为一个接口
Converter<T,R>。我也不清楚为什么它是抽象的,因为它似乎做了所有它应该做的事情,因为它有两个功能,所以它应该直接实现那个接口。 -
看起来你可能正在尝试和MapStruct做同样的事情。
标签: java design-patterns