在java中,要创建一个数据结构,我们需要这样做
Builder builder=Data.newBuilder();
builder.setField(...);
...
Data=builder.build();
为什么不直接避免每个Data
领域的getter()
和setter()
呢?.比如:
Data data=new Data();
data.setFiled(...);
Protobuf 使用构建器来生成消息对象,因为消息对象本身是不可变的:
消息对象 [...] 是不可变的,就像 Java 字符串一样。要构造消息对象,您需要使用构建器。
这样做可能是为了允许仅在已知 Message 对象不会更改时才能进行的优化。