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

建造者模式深度解析:將複雜對象構建與表示分離

     編輯:關於C

建造者模式

建造者模式將一個複雜對象的構建過程與其表示分離,使得相同的構建過程可以創建不同的表示。適用於構建步驟固定但內容多變的場景。

模式結構

建造者模式結構圖

核心角色

  • Builder(抽象建造者):定義構建步驟介面
  • ConcreteBuilder(具體建造者):實現具體構建邏輯
  • Director(指揮者):控制構建流程,隔離客戶端與建造細節
  • Product(產品):最終構建出的複雜對象

經典案例:把大象裝進冰箱

演示如何用建造者模式封裝「打開冰箱→放入物品→關閉冰箱」的固定流程,支援不同物品(大象、牛奶、披薩、甚至另一個冰箱)的裝箱。

C# 實現代碼

namespace 把大象裝冰箱 {
    // 抽象建造者:固定構建步驟
    abstract class PutIntoFridge {
        public abstract void OpenFridge();
        public abstract void PutInto();
        public abstract void CloseFridge();
    }

    // 具體建造者:大象裝箱實現
    class PutElephantIntoFridge : PutIntoFridge {
        private string name;
        public PutElephantIntoFridge(string name) { this.name = name; }
        public override void OpenFridge()  { Console.WriteLine("打開了冰箱門~~"); }
        public override void PutInto()     { Console.WriteLine("把 {0} 裝進冰箱。", name); }
        public override void CloseFridge() { Console.WriteLine("把冰箱門關上了。"); }
    }

    // 指揮者:控制流程
    class Director {
        private PutIntoFridge builder;
        public Director(PutIntoFridge b) { builder = b; }
        public void Construct() {
            builder.OpenFridge();
            builder.PutInto();
            builder.CloseFridge();
        }
    }

    class Program {
        static void Main() {
            var elephant = new PutElephantIntoFridge("小象");
            var director = new Director(elephant);
            director.Construct();
        }
    }
}

運行結果

運行輸出:打開冰箱門~~ 把 小象 裝進冰箱。 把冰箱門關上了。

優缺點總結

優點缺點
構建過程與表示分離,擴展性強產品結構變化大時需修改抽象建造者
細節封裝在具體建造者中,符合單一職責每種產品需對應一個具體建造者,類數量增加
指揮者隔離客戶端,降低耦合不適用於構建步驟差異極大的產品

適用場景

  • 相同構建步驟,不同表示內容(如生成不同格式報表)
  • 複雜對象構建涉及多步驟、多部件(如文檔轉換、餐點套餐組合)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved