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

C# 設計模式:建造者模式抽象建造者與 SQL 具體建造者 (4/5)

     編輯:關於C語言

抽象建造者:AbstractMessageBuilder

定義建造步驟的抽象介面,持有產品物件 Operation,強制子類實作具體建造邏輯:

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Builder
{
    /// 
    /// 抽象 Message 建造者(Builder)
    /// 
    public abstract class AbstractMessageBuilder
    {
        /// 
        /// 建構函式
        /// 
        /// 產品類型
        public AbstractMessageBuilder(string type)
        {
            this._operation = new Operation(type);
        }

        /// 
        /// 操作(Product)
        /// 
        protected Operation _Operation;
        /// 
        /// 操作(Product)
        /// 
        public Operation Operation
        {
            get { return _Operation; }
            set { _Operation = value; }
        }

        /// 
        /// 建造插入方法
        /// 
        /// 
        abstract public void BuilderInsert(MessageModel mm);

        /// 
        /// 建造獲取方法
        /// 
        abstract public void BuilderGet();
    }
}

具體建造者:SqlMessageBuilder

實作 SQL 專屬的建造邏輯,構建 SQL 格式的操作指令字串:

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Builder
{
    /// 
    /// SqlMessage 建造者(ConcreteBuilder)
    /// 
    public class SqlMessageBuilder : AbstractMessageBuilder
    {
        /// 
        /// 建構函式
        /// 
        public SqlMessageBuilder()
            : base("sql")
        {
        }

        /// 
        /// 建造 Sql 插入方法
        /// 
        /// Message 實體物件
        public override void BuilderInsert(MessageModel mm)
        {
            base._Operation["insert"] = "SqlMessage|Insert|" + mm.Message + "|" + mm.PublishTime.ToString() + "";
        }

        /// 
        /// 建造 Sql 獲取方法
        /// 
        public override void BuilderGet()
        {
            base._Operation["get"] = "SqlMessage|Get";
        }
    }
}

關鍵設計解析

  • 建造步驟標準化:抽象類別定義 BuilderInsert、BuilderGet 兩個建造步驟,確保流程一致。
  • 產品封裝:Operation 類別封裝執行指令字串,作為最終產品。
  • 類型參數化:建構函式傳入 "sql" 或 "XML",標識產品類型。
  • 字典儲存指令:Operation 內部用 Dictionary<string, string> 儲存不同操作的指令字串。

抽象建造者與具體建造者的分離,使系統易於新增新的建造者(如 JSONMessageBuilder),符合開放封閉原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved