Pessoal gostaria de enteder melhor em qual caso se encaixa melhor fazer uma builder ou uma factory?
Pessoal gostaria de enteder melhor em qual caso se encaixa melhor fazer uma builder ou uma factory?
Oi Juliano, tudo bem ?
Ambos são design patterns de criação.
A diferença é que quando usamos o pattern Factory
a ideia é que nós passemos apenas a matéria prima para o objeto e toda lógica de como o produto será gerado é abstraído.
Já quando usamos o builder, nós passamos todos os parâmetros para a construção, ou seja sabemos como é criado o objeto.
Espero ter ajudado.
Abraços
Eu tinha essa dúvida e entendo dessa forma:
O Factory Method pode ser entendido como um Builder simplificado, sem controle preciso do objeto a retornar. Segue a padronização de fábrica.
O Builder permite um controle maior da granularidade do objeto a ser retornado, com todos os possíveis parâmetros. Tipo uma encomenda, à gosto do cliente.
Factory
static class CarroFactory {
static Carro fabricar(marca, modelo, cor) {
return new Carro(marca, modelo, cor);
}
}
Carro carro = CarroFactory.fabricar("audi", "A4", "branco");
Ou seja, o carro sempre vai ter marca, modelo, cor, nessa ordem.
Builder
class CarroBuilder {
String marca, modelo, cor;
CarroBuilder marca(marca) { this.marca = marca; return this; }
CarroBuilder modelo(modelo) { this.modelo = modelo; return this; }
CarroBuilder cor(cor) { this.cor = cor; return this; }
// outros métodos
Carro construir() {
return new Carro(this);
}
}
Carro carro = new CarroBuilder()
.marca("audi")
.cor("branco")
.modelo("A4")
.construir();
O carro talvez tenha cor ou modelo ou marca, e a ordem da declaração tanto faz.