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

C# 設計模式:建造者模式完整實作與指導者角色 (5/5)

     編輯:關於C語言

具體建造者:XMLMessageBuilder

負責建構 XML 格式的操作指令,實作抽象建造者定義的建造步驟:

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

namespace Pattern.Builder
{
    /// 
    /// XMLMessage 建造者(ConcreteBuilder)
    /// 
    public class XMLMessageBuilder : AbstractMessageBuilder
    {
        /// 
        /// 建構函式
        /// 
        public XMLMessageBuilder()
            : base("XML")
        {
        }

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

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

指導者角色:Message 類別

指導者封裝建造流程,控制建造步驟的執行順序,使客戶端無需知悉具體建造細節:

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

namespace Pattern.Builder
{
    /// 
    /// 指導者(Director)
    /// 
    public class Message
    {
        /// 
        /// 調用具體建造者角色以創建產品物件
        /// 
        /// AbstractMessageBuilder
        /// Message 實體物件
        public void Construct(AbstractMessageBuilder messageBuilder, MessageModel mm)
        {
            messageBuilder.BuilderInsert(mm);
            messageBuilder.BuilderGet();
        }
    }
}

建造者模式完整流程

  1. 客戶端建立具體建造者(SqlMessageBuilder 或 XMLMessageBuilder)。
  2. 客戶端建立指導者 Message 並呼叫 Construct()。
  3. 指導者依序呼叫建造者的 BuilderInsert() 與 BuilderGet()。
  4. 建造者構建 Operation 產品物件(包含執行指令字串)。
  5. 客戶端透過建造者取得產品 Operation 並呼叫 GetResult() 執行實際操作。

此設計將複雜物件的建構過程與其表示分離,使相同建構流程可創建不同表示(SQL/XML),完美詮釋建造者模式核心意圖。

建造者模式類別圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved