在大多數教程中(Judith Bishops的書或here),我看到類似於下面的示例。爲什麼要使用構建器模式?
如果構造器模式是指創建方法,主任級,執行集合構建的孩子的作業的建設...
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);
}
......爲什麼我們不只是移動的構建方法來構建器類?
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();
}
請給我看一些建造者模式真正有用的例子。
我不知道如果我用這個模式,到目前爲止,但它看起來像的想法是允許製造商從它的定義來實現獨立的,因此允許存在任何數量的完全獨立於正在使用它們的導演類別的不同構建者。 – rid 2012-02-18 22:27:22
@Radu:但Director類並不獨立於Builder:它在Construct的參數中使用Builder類。 – 2012-02-18 22:31:26
確實,它使用了構建器,但它並不需要知道構建器是如何實現的。它只知道公共接口。同樣,構建器不需要知道使用它的類的詳細信息。 – rid 2012-02-18 22:33:25