为什么 protobuf 使用构建器来构造数据?



在java中,要创建一个数据结构,我们需要这样做

Builder builder=Data.newBuilder();
builder.setField(...);
...
Data=builder.build();

为什么不直接避免每个Data领域的getter()setter()呢?.比如:

Data data=new Data();
data.setFiled(...);

Protobuf 使用构建器来生成消息对象,因为消息对象本身是不可变的:

消息对象 [...] 是不可变的,就像 Java 字符串一样。要构造消息对象,您需要使用构建器。

这样做可能是为了允许仅在已知 Message 对象不会更改时才能进行的优化。

相关内容

  • 没有找到相关文章

最新更新