【问题标题】:Extensible Mapping design可扩展映射设计
【发布时间】:2011-12-06 08:49:53
【问题描述】:

我们有这样的场景。

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

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

有人可以建议我一个很好的可扩展设计模式来做到这一点。这可以使用装饰器完成还是使用拦截器?

问候

【问题讨论】:

  • 为什么不只是子类化地图?即 A 类扩展 HashMap {}

标签: oop design-patterns


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复。这里的问题不是映射,而是某种具有可扩展映射的框架或模式。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 1970-01-01
    • 2011-08-14
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    相关资源
    最近更新 更多