六、建造者模式的演化
建造者模式在使用的過程中可以演化出多種形式。
省略抽象建造者角色
如果系統中只需要一個具體建造者的話,可以省略掉抽象建造者。這時代碼可能如下:
// "Director"
class Director
{
private ConcreteBuilder builder;
// Methods
public void Construct()
{
builder.BuildPartA();
builder.BuildPartB();
}
}
省略指導者角色
在具體建造者只有一個的情況下,如果抽象建造者角色已經被省略掉,那麼還可以省略掉指導者角色。讓Builder角色自己扮演指導者與建造者雙重角色。這時代碼可能如下:
public class Builder
{
private Product product = new Product();
public void BuildPartA()
{
//Some code here
}
public void BuildPartB()
{
//Some code here
}
public Product GetResult()
{
return product;
}
public void Construct()
{
BuildPartA();
BuildPartB();
}
}