負責建構 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";
}
}
}
指導者封裝建造流程,控制建造步驟的執行順序,使客戶端無需知悉具體建造細節:
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();
}
}
}
SqlMessageBuilder 或 XMLMessageBuilder)。Message 並呼叫 Construct()。BuilderInsert() 與 BuilderGet()。Operation 產品物件(包含執行指令字串)。Operation 並呼叫 GetResult() 執行實際操作。此設計將複雜物件的建構過程與其表示分離,使相同建構流程可創建不同表示(SQL/XML),完美詮釋建造者模式核心意圖。