En la mayoría de los tutoriales (libro de Judith Bishops, o here), veo un ejemplo similar al siguiente.¿Por qué usar el patrón de generador?
Si el Builder significa crear método de construcción en la clase directora, que lleva a cabo un conjunto de operaciones Constructor Childs ...
class Director {
public static void Construct(Builder builder) {
builder.BuildPartA();
builder.BuildPartB();
...
}
}
abstract class Builder {
public abstract void BuildPartA();
public abstract void BuildPartB();
...
}
class Builder1 : Builder { ... }
class Builder2 : Builder { ... }
void Main() {
Builder1 b1 = new Builder1();
Builder2 b2 = new Builder2();
Director.Construct(b1);
Director.Construct(b2);
}
... ¿Por qué no basta con mover el método de construcción para el Constructor ¿clase?
class Builder {
public virtual void BuildPartA();
public virtual void BuildPartB();
public void Construct() {
BuildPartA();
BuildPartB();
...
}
...
}
class Builder1 : Builder { ... }
class Builder2 : Builder { ... }
void Main() {
Builder1 b1 = new Builder1();
Builder2 b2 = new Builder2();
b1.Construct();
b2.Construct();
}
Por favor, muéstreme un ejemplo donde el patrón de constructor es realmente útil.
No estoy seguro de si he utilizado este patrón hasta ahora, pero parece que la idea es permitir que el constructor para ser implementado independiente de su definición, lo que permite la existencia de cualquier número de constructores diferentes totalmente independientes de la clase de director que los está utilizando. – rid
@Radu: pero la clase Director no es independiente del Constructor: usa la clase Constructor en el parámetro Construir. –
Es cierto que usa un generador, pero no tiene que saber cómo se implementa el generador. Solo conoce la interfaz pública. Del mismo modo, el constructor no necesita conocer los detalles de las clases que lo utilizan. – rid