A menudo veo que la implementación del patrón de construcción (en Java) es así:
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
}
}
}
Ejemplos también aquí:
- /programming/25130510/builder-pattern-in-java
- https://www.javacodegeeks.com/2013/01/the-builder-pattern-in-practice.html
¿Por qué las personas introducen la fuerte dependencia (mutua) entre el constructor y el tipo para construir?
EDITAR: Quiero decir, sé que por su naturaleza el generador está vinculado a la clase desde la que quiero construir una instancia ( FooBuilder -> Foo
). Lo que cuestiono es: ¿por qué existe la necesidad de lo contrario ( Foo -> FooBuilder
)
Por el contrario, veo (con menos frecuencia) implementaciones que crean una nueva Foo
instancia de Foo
cuándo se crea el generador y establecen los campos en el caso de que se invoquen los métodos de generador apropiados. Me gusta más este enfoque, porque todavía tiene una API fluida y no vincula la clase a su generador. ¿Hay alguna desventaja de este otro enfoque?
Foo
constructor es público?