Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Diferença entra criar uma builder e uma factory

Pessoal gostaria de enteder melhor em qual caso se encaixa melhor fazer uma builder ou uma factory?

2 respostas

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

solução!

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.