我必须为一个大约有 12 种变体的对象生成一个原型类。所有 12 个变体共享四个相同的字段,然后具有特定的字段。在大多数情况下,非特定字段的数量将比公共字段多得多。
我想知道实现这一目标的最有效方法是什么。
第一种选择:在通用原型类中定义通用字段,然后在所有特定类型中声明此类型的字段:
message CommonFields {
// common_field1
// ... common_fieldN
}
message SpecificType1 {
CommonFields common = 1;
// specific fields...
}
或者最好定义一个包含字段的顶级原型,然后有一个 oneof 字段,它可以引用包含特定字段的另一种类型:
message BaseType {
// common_field_1
// ... common_field_N
oneof specific_fields {
SpecificTypeFields1 type1_fields = N;
SpecificTypeFields2 type1_fields = N+1;
}
}
message SpecificTypeFields1 {
// specific fields...
}
message SpecificTypeFields2 {
// specific fields...
}
我对表演和惯例特别感兴趣。或者,如果有任何更典型的方式,例如只是重复公共字段。请记住,尽管我的原型只有 4 个公共字段,通常有 3-8 个特定字段。