Cœu*_*œur 4 oop json data-structures
我们正在为Web(HTML + JS)和移动(iOS/Android/Windows)构建JSON API.
服务器需要发送具有基本结构和可变结构的数据.在我们的示例中,基本结构包括"名称"和"描述",变量结构称为"模板",并根据其类型具有不同的字段.我们想出了至少三种写作方式(可能还有更多):
{
"id": "A001",
"name": "My First Game",
...,
"template_type": "BATTLE",
"template": {
...
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,客户端应该查看"template_type"以确定如何解析"模板".单独的"模板"对象不足以知道它是什么.
{
"id": "A001",
"name": "My First Game",
...,
"template": {
"type": "BATTLE",
...
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,客户端应该查看"模板"中的"类型",以确定如何解析"模板".单独的"模板"对象是自足的,无法知道它是什么.
{
"id": "A001",
"name": "My First Game",
...,
"template_battle": {
...
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,客户端应该查看所有键("template_battle","template_puzzle",...),以确定我们拥有哪种类型的游戏.仅仅"template_battle"对象就足以知道它是什么,因为它总是"BATTLE"类型.
有关哪种JSON解决方案最适合Web和移动解析和使用的客户端的建议?(你可以提出其他解决方案)
就个人而言,我会将类型放在模板本身上,原因很简单,就是封装.想象一下,您想要分离模板和外部对象的创建(记住关注点的分离和单一责任原则(https://en.wikipedia.org/wiki/Single_responsibility_principle)).如果类型位于外部对象上,则始终必须指定模板的类型才能创建模板.这是一种可能性,但它增加了耦合并违反了封装.
为了进一步阅读,我建议开始使用https://en.wikipedia.org/wiki/SOLID_(object-oriented_design).