我需要在不同实体之间进行映射,以便在两个系统之间创建同步工具。映射是1:1,我将有大约4-5个不同的实体,我将在它们之间进行映射。
E.g
A1 -> B1
A2 -> B2
A3 -> B3
通过REST API进行JSON通信,我将不得不将对象转换/转换为不同请求的JSON表示。
我希望了解您在以下决定之间的想法:
1)在每个类中,创建一个知道如何转换为其他系统中相应对象的类方法。每个类都知道如何通过实现toJSON,toXML方法来表示自己。
E.g
class A1 {
static A2 toA2(A1 a1) return { }
String toJSON() return { }
}
class A2 {
static A1 toA1(A2 a2) return { }
String to JSON() return { }
}
2)直接使用转换器类(Object - > JSON),其方法是将对象转换为另一个系统中的相应JSON。例如。
Converter.entityAtoEntityBJSON(aEntityA)
返回实体B系统中实体A的JSON表示。
第二个选项将导致转换器类知道每个实体,而在1)只有两个类知道彼此。此外,如果需要表示XML,则每个类都可以实现toXML()。
您怎么看?
编辑:添加了有关REST API的说明。
答案 0 :(得分:1)
虽然第一个选项似乎引人注目,但我发现它打破了SRP(单一责任原则),因为它现在有多个改变的理由,每个实体都知道如何将其转换为其他形式因此,每当您更改表示格式或结构时,您都必须修改每个实体。所以我更喜欢第二种选择来集中化变革。我会使用像IMapper
这样的接口,它接受一个实体并将其转换为另一个系统中的实体。这类似于大多数ORM将对象存储到数据库中的方式。