首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式:建造者模式完整指南(二)— 結構性代碼與雙產品構建演示

     編輯:關於C語言

結構性示範代碼


using System;
using System.Collections;

// 指導者
class Director
{
    public void Construct(Builder builder)
    {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

// 抽象建造者
abstract class Builder
{
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

// 具體建造者 1
class ConcreteBuilder1 : Builder
{
    private Product product;
    public override void BuildPartA()
    {
        product = new Product();
        product.Add("PartA");
    }
    public override void BuildPartB() => product.Add("PartB");
    public override Product GetResult() => product;
}

// 具體建造者 2
class ConcreteBuilder2 : Builder
{
    private Product product;
    public override void BuildPartA()
    {
        product = new Product();
        product.Add("PartX");
    }
    public override void BuildPartB() => product.Add("PartY");
    public override Product GetResult() => product;
}

// 產品
class Product
{
    private ArrayList parts = new ArrayList();
    public void Add(string part) => parts.Add(part);
    public void Show()
    {
        Console.WriteLine(" Product Parts -------");
        foreach (string p in parts) Console.WriteLine(p);
    }
}

// 客戶端
public class Client
{
    public static void Main()
    {
        Director director = new Director();
        Builder b1 = new ConcreteBuilder1();
        Builder b2 = new ConcreteBuilder2();

        director.Construct(b1);
        Product p1 = b1.GetResult();
        p1.Show();

        director.Construct(b2);
        Product p2 = b2.GetResult();
        p2.Show();
    }
}

執行結果

 Product Parts -------
PartA
PartB
 Product Parts -------
PartX
PartY

核心流程解析

  1. 客戶端建立 Director 與兩個 Builder
  2. Director.Construct() 控制構建順序:A → B
  3. 各 Builder 實作具體構建邏輯
  4. 構建完成透過 GetResult() 取得產品
  5. 同一流程構建出不同內部結構的產品

關鍵設計點

  • Director **不依賴具體建造者**,僅依賴 Builder 抽象
  • 構建順序集中在 Director,易於修改/擴展流程
  • Product 類別無建構知識,純粹資料容器
  • 客戶端只需知道 Director 與 Builder,不知產品細節
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved