ごめん？
ビルダーパターンは、複雑なオブジェクトの構造を表現から分離するために使用される設計パターンであり、同じ構造プロセスが異なる表現を作成できるようにします。

このパターンは、多くのパラメーターを持つ複雑なクラスがある状況で有用であり、議論の長いリストを持つビルダーを避けたいと思うことがあります。

C＃の実装の例は次のとおりです。

//抽象ビルダークラス
抽象クラスのピザビルダー
{
    保護されたピザピザ。

    パブリックピザgetpizza（）
    {
        ピザを返します。
    }

    public void createNewpiz shodproduct（）
    {
        Pizza = new Pizza（）;
    }

    パブリックアブストラクトvoid setdough（）;
    public abstract void setSauce（）;
    public abstract void setopping（）;
}

// ConcreteBuilderクラス
クラスHawaiianPizzabuilder：Pizzabuilder
{
    パブリックオーバーライドvoid setdough（）
    {
        pizza.dough = "Cross";
    }

    パブリックオーバーライドvoid setSauce（）
    {
        pizza.sauce = "mild";
    }

    パブリックオーバーライドvoid setopping（）
    {
        pizza.topping = "ham+pineapple";
    }
}

//製品クラス
クラスピザ
{
    private string dough = "";
    プライベートストリングソース= "";
    プライベート文字列トッピング= "";

    パブリックストリング生地
    {
        {return dough;}
        set {dough = value;}
    }

    パブリックストリングソース
    {
        {return Sauce;}
        set {Sauce = value;}
    }

    パブリック文字列のトッピング
    {
        {return toping;}
        set {topping = value;}
    }
}

//ディレクタークラス
クラスウェイター
{
    プライベートピザビルダーピザビルダー。

    public void setpizzabuilder（Pizzabuilder PB）
    {
        pizabuilder = pb;
    }

    パブリックピザgetpizza（）
    {
        pizzabuilder.getpizzaを返します（）;
    }

    public void constructpizza（）
    {
        pizzabuilder.createNewpizproduct（）;
        pizzabuilder.setDough（）;
        pizzabuilder.setsauce（）;
        pizzabuilder.settopping（）;
    }
}

//クライアントクラス
クラスのピッツォレトア
{
    static void main（string [] args）
    {
        ウェイターウェイター= new Waiter（）;
        Pizzabuilder hawaiianpizzabuilder = new Hawaiianpizzabuilder（）;

        waiter.setpizzabuilder（hawaiianpizzabuilder）;
        waiter.constructpizza（）;

        Pizza Pizza = waiter.getpizza（）;
    }
}


この例では、ディレクター（ウェイター）は、建設クラス（ピザビルダー）と製品クラス（ピザ）の間の仲介者として機能します。建設クラス（HawaiianPizzabuilder）がピザと監督の建設方法を定義します