橋接模式中傳遞的資料模型:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Bridge
{
///
/// Message 實體類別
///
public class MessageModel
{
///
/// 建構函式
///
/// Message 內容
/// Message 發布時間
public MessageModel(string msg, DateTime pt)
{
this._message = msg;
this._publishTime = pt;
}
private string _message;
///
/// Message 內容
///
public string Message
{
get { return _message; }
set { _message = value; }
}
private DateTime _publishTime;
///
/// Message 發布時間
///
public DateTime PublishTime
{
get { return _publishTime; }
set { _publishTime = value; }
}
}
}
持有實作介面參考,定義高層操作並委派給實作物件:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Bridge
{
///
/// 操作 Message(Abstraction)
///
public class Message
{
private AbstractMessage _abstractMessage;
///
/// 操作 Message(Implementor)
///
public AbstractMessage AbstractMessage
{
get { return _abstractMessage; }
set { _abstractMessage = value; }
}
///
/// 獲取 Message
///
/// MessageModel 清單
public virtual List<MessageModel> Get()
{
return _abstractMessage.Get();
}
///
/// 插入 Message
///
/// Message 實體物件
/// 是否成功
public virtual bool Insert(MessageModel mm)
{
return _abstractMessage.Insert(mm);
}
}
}
_abstractMessage 欄位儲存 AbstractMessage 實例。AbstractMessage 屬性支援運行時動態切換實作。Get()、Insert() 直接委派給實作物件。virtual 允許子類別(RefinedAbstraction)覆寫擴展。| 模式角色 | 本例類別 | 說明 |
|---|---|---|
| Abstraction | Message | 基礎抽象,持有 Implementor 參考 |
| RefinedAbstraction | MyMessage | 擴展抽象,增加額外行為 |
| Implementor | AbstractMessage | 實作介面,定義核心操作契約 |
| ConcreteImplementor | SqlMessage, XMLMessage | 具體實作,封裝具體技術細節 |