“Builder” é um pattern onde uma classe “auxiliar” é usada pra facilitar a instanciação de objetos que tem muitos atributos obrigatórios. Normalmente você usa os patterns “Builder” e “Fluent Interface” (como é o caso da classe StringBuilder).
Por exemplo, imagina que você tem uma classe Pessoa que só pode ser instanciada se for fornecido todos os dados da Pessoa:
class Pessoa {
String nome;
String sobrenome;
int idade;
double altura;
double peso;
Pessoa (String nome, String sobrenome, int idade, double altura, double peso) {
this.nome = nome;
this.sobrenome = sobrenome;
this.idade = idade;
this.altura = altura;
this.peso = peso;
}
}
Imagina a dificuldade em se instanciar esta classe, são 5 atributos inicializados junto com o construtor, é muito fácil errar a ordem:
Pesosa p = new Pessoa("Fabio","Nascimento",27,1.74,75.0);
Usando o pattern de Builder, voce criaria uma classe auxiliar pra isso, com os atributos que serão inicializados e com métodos pra te ajudar:
class PessoaBuilder {
String nome;
String sobrenome;
int idade;
double altura;
double peso;
void nome(String nome) { this.nome = nome; }
void sobrenome(String sobrenome) { this.sobrenome = sobrenome; }
void idade(int idade) { this.idade = idade; }
void altura (double altura) { this.altura = altura; }
void peso (double peso) { this.peso = peso; }
Pessoa constroiPessoa() {
return new Pessoa(nome,sobrenome,idade,altura,peso);
}
}
PessoaBuilder pb = new PessoaBuilder();
pb.nome("Fabio");
pb.sobrenome("Nascimento");
pb.idade(27);
pb.altura(1.74);
pb.peso(75.0);
Pessoa p = pb.constroiPessoa();
Usando o pattern Fluent Interface, ficaria melhor ainda:
class PessoaBuilder {
String nome;
String sobrenome;
int idade;
double altura;
double peso;
PessoaBuilder nome(String nome) { this.nome = nome; return this; }
PessoaBuilder sobrenome(String sobrenome) { this.sobrenome = sobrenome; return this; }
PessoaBuilder idade(int idade) { this.idade = idade; return this; }
PessoaBuilder altura (double altura) { this.altura = altura; return this; }
PessoaBuilder peso (double peso) { this.peso = peso; return this; }
Pessoa constroiPessoa() {
return new Pessoa(nome,sobrenome,idade,altura,peso);
}
}
Pessoa p = new PessoaBuilder().nome("Fabio").sobrenome("Nascimento").altura(1.74).peso(75.0).constroiPessoa();
Acho que é desse Builder que você ta falando, se for, espero ter ajudado