Duvida sobre padrão Builder

3 respostas
wilsontads

Pessoal, vi o exemplo no link: http://stackoverflow.com/questions/328496/when-would-you-use-the-builder-pattern
e fiquei com a seguinte dúvida:

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;
  }
}
No retorno tenho seguinte:
Pizza pizza = new Pizza.Builder(12).cheese(true).pepperoni(true).bacon(true).build();
Só que, se as variáveis size,cheese,pepperoni,bacon são do tipo private. Como eu posso acessá-las?;

3 Respostas

ViniGodoy

Provavelmente o autor não declarou os gets publicos.

wilsontads

rs,
Exemplo perfeito: http://en.wikipedia.org/wiki/Builder_pattern#Java

ViniGodoy

Outro exemplo é a classe StringBuilder (que não tem esse nome por acaso).

Criado 26 de junho de 2012
Ultima resposta 26 de jun. de 2012
Respostas 3
Participantes 2