系統僅需一個具體建造者時:
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();
}
}
StringBuilder 就是建造者模式的標準實作Append() 系列 = BuildPart()ToString() = GetResult()string| 條件 | 說明 |
|---|---|
| 產品內部結構複雜 | 多組成部分、嵌套結構 |
| 屬性相互依賴 | 建造順序影響結果,需強制順序 |
| 創建過程依賴外部物件 | 不易直接獲取的輔助物件 |