可扩展映射设计



我们有这样一个场景。

ClassA有一些属性,ClassZ有与ClassA相同的属性,然后在中间我们有一个映射器,它将属性从ClassZ映射到ClassA,反之亦然。我们不使用反射,我们手动执行(使用classZ.setXXX(classA.getXXX()))。

现在假设我们想要将ClassA扩展到ClassB并添加新属性,我们也将ClassZ扩展到ClassY并在其中添加类似的属性。所以现在我们需要在ClassY和ClassB之间建立映射。

谁能建议我一个好的可扩展设计模式来做到这一点?这可以使用装饰器或可能使用拦截器?

不是一个设计模式,但绝对是一个工具,可以帮助是AutoMapper。

它有助于两个对象之间的映射。如果属性名称相似,映射将自动配置。如果你有一些异常,你可以在一个地方定义它们,并在任何地方重用。

我发现的一种方法是使用@Decorators (CDI)。我定义了一个映射Decorator,它首先将调用委托给原始映射器,然后映射新字段