title: Setters AND ( not OR or VS ) builder patterns
body: <p>I have a situation where I use a builder pattern for constructing an object. Best example to give is the pizza code</p>
  
  <pre><code>public class Pizza {
    private int size;
    private boolean cheese;
    private boolean pepperoni;
    private boolean bacon;
  
    public static class Builder {
      //required
      private final int size;
  
      //optional
      private boolean cheese = false;
      private boolean pepperoni = false;
      private boolean bacon = false;
  
      public Builder(int size) {
        this.size = size;
      }
  
      public Builder cheese(boolean value) {
        cheese = value;
        return this;
      }
  
      public Builder pepperoni(boolean value) {
        pepperoni = value;
        return this;
      }
  
      public Builder bacon(boolean value) {
        bacon = value;
        return this;
      }
  
      public Pizza build() {
        return new Pizza(this);
      }
    }
  
    private Pizza(Builder builder) {
      size = builder.size;
      cheese = builder.cheese;
      pepperoni = builder.pepperoni;
      bacon = builder.bacon;
    }
  }
  </code></pre>
  
  <p>So far so good.</p>
  
  <p>Now lets assume a usecase where I need to <code>update</code>  the <code>cheese</code>. That needs a <code>setter</code>. I have never seen a single example where builder patterns coexist with setters, making me suspicious that what I was upto was an anti-pattern.</p>
  
  <p>Can setters AND builders coexist together ?</p>