title: Why does the protobuf use builder to construct data?
body: <p>In java, to create a data structure we need to do like </p>
  
  <pre class="lang-java prettyprint-override"><code>Builder builder=Data.newBuilder();
  builder.setField(...);
  ...
  Data=builder.build();
  </code></pre>
  
  <p>Why not just provoide the <code>getter()</code> and <code>setter()</code> for each field of <code>Data</code>?. like:</p>
  
  <pre><code>Data data=new Data();
  data.setFiled(...);
  </code></pre>