对于令人困惑的标题道歉,无法想出更好的标题。
我的API会返回如下响应:
{
"type":"a",
"extras":{
"a1":"valueA1",
"a2":"valueA2"
}
}
如果类型为" b",则响应如下:
{
"extras":{
"b1":"valueB1"
},
"type":"b" //note that "type" may come after "extras"
}
对于第三种类型" c",响应可以是:
{
"type":"c",
"extras":{
"b1":"valueB1",
"a1":"valueA1",
"a2":"valueA2"
}
}
以下是我的要求:
我正在尝试的天真解决方案是拥有一个"额外的" POJO包含所有可能的属性值: 的 Extras.java
String a1;
String a2;
String b1;
我的客户在消费期间有这样的支票:
if(type.isA()) {
a1 = extras.a1;
a2 = extras.a2;
//there is no way to prevent developers from calling extras.b1
}
我的代码充满了超过50个属性,并且散布着20种类型的空检查。有没有更好的办法 ?
奖金问题:我强烈认为API设计不佳。还有其他想法吗?