0

我需要在不同实体之间进行映射,以便在两个系统之间创建同步工具。映射是 1:1,我将在 4-5 个不同的实体之间进行映射。

例如

A1 -> B1
A2 -> B2
A3 -> B3

通信是通过 REST API 以 JSON 格式进行的,对于不同的请求,我必须将对象转换/转换为其 JSON 表示形式。

我想知道您在以下决定之间的想法:

1)在每个类中,创建一个类方法,该类方法知道如何转换为其他系统中对应的对象。每个类都知道如何通过实现 toJSON、toXML 方法来表示自己。

例如

class A1 {
    static A2 toA2(A1 a1) return { }
    String toJSON() return { }
} 
class A2 {
    static A1 toA1(A2 a2) return { }
    String to JSON() return { }
}

2) 立即使用转换器类(对象 -> JSON),其中包含将对象转换为其他系统中相应 JSON 的方法。例如 Converter.entityAtoEntityBJSON(aEntityA),返回实体 B 系统中实体 A 的 JSON 表示。

第二个选项将导致转换器类知道每个实体,而在 1) 只有两个类彼此知道。此外,如果需要表示 XML,则每个类都可以实现一个 toXML()。

你怎么看?

编辑:添加了关于 REST API 的注释。

4

1 回答 1

1

好吧,虽然第一个选项看起来很有吸引力,但我发现它违反了SRP(单一责任原则),因为它现在有不止一个改变的理由,每个实体都知道如何将它自己转换为其他形式,所以每当你改变表示格式时或结构,您将不得不修改每个实体。所以我更喜欢第二种集中变化的选择。我会使用这样的接口IMapper,它需要一个实体并将其转换为另一个系统中的实体。这类似于大多数 ORM 将对象存储到数据库中的方式。

于 2013-06-19T11:36:58.230 回答