Setters AND (não OR ou VS) padrões do construtor

Eu tenho uma situação em que eu uso um padrão de construtor para construir um objeto. O melhor exemplo a dar é o código da pizza

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;
  }
}

Por enquanto, tudo bem.

Agora vamos assumir um caso de uso onde eu precisoupdate acheese. Isso precisa de umsetter. Nunca vi um único exemplo em que os padrões de construtores coexistissem com os levantadores, suspeitando que o que eu estava fazendo era um antipadrão.

Montadores e construtores podem coexistir juntos?

questionAnswers(4)

yourAnswerToTheQuestion