隨著系統複雜度變化,建造者模式可演化為多種簡化形態。
適用:系統**只需要一個具體建造者**
class Director
{
private ConcreteBuilder builder;
public void Construct()
{
builder.BuildPartA();
builder.BuildPartB();
}
}
指導者直接依賴具體建造者,減少一層抽象。
適用:具體建造者只有一個,**且抽象建造者已省略**
public class Builder
{
private Product product = new Product();
public void BuildPartA() { /* ... */ }
public void BuildPartB() { /* ... */ }
public Product GetResult() => product;
// 自兼指導者角色
public void Construct()
{
BuildPartA();
BuildPartB();
}
}
public class Client
{
private static Builder builder;
public static void Main()
{
builder = new Builder();
builder.Construct();
Product product = builder.GetResult();
}
}
| 場景 | 保留角色 | 省略角色 |
|---|---|---|
| 多種產品構建流程 | Director + AbstractBuilder + ConcreteBuilders | 無 |
| 單一產品,但構建邏輯複雜/可復用 | AbstractBuilder + ConcreteBuilder | Director |
| 單一產品,構建流程固定簡單 | Builder (自兼 Director) | AbstractBuilder + Director |