Muitas vezes, vejo a implementação do padrão do construtor (em Java) assim:
public class Foo {
private Foo(FooBuilder builder) {
// get alle the parameters from the builder and apply them to this instance
}
public static class FooBuilder {
// ...
public Foo build() {
return new Foo(this); // <- this part is what irritates me
}
}
}
Exemplos também aqui:
- /programming/25130510/builder-pattern-in-java
- https://www.javacodegeeks.com/2013/01/the-builder-pattern-in-practice.html
Por que as pessoas introduzem a forte dependência (mútua) entre construtor e tipo a construir?
EDIT: Quero dizer, eu sei que, por sua natureza, o construtor está vinculado à classe da qual quero criar uma instância a partir de ( FooBuilder -> Foo
). O que eu questiono é: por que existe a necessidade de o contrário ( Foo -> FooBuilder
)
Pelo contrário, vejo (com menos frequência) implementações que criam uma nova instância de Foo
quando o construtor é criado e configuram os campos na instância de Foo
quando os métodos de construtor apropriados são chamados. Eu gosto mais dessa abordagem, porque ela ainda possui uma API fluente e não vincula a classe ao seu construtor. Existe alguma desvantagem dessa outra abordagem?
Foo
construtor for público?