實作抽象同事介面,提供 SQL 訊息處理邏輯:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Mediator
{
///
/// Sql 方式操作 Message(ConcreteColleague)
///
public class SqlMessage : AbstractMessage
{
///
/// 建構函式
///
/// UserId
public SqlMessage(string userId)
: base(userId)
{
}
///
/// 接受 Message(由中介者調用)
///
/// 來自 UserId
/// Message 實體物件
/// 處理結果描述
public override string Insert(string from, MessageModel mm)
{
return "Sql方式插入Message(" + from + "發送給" + base.UserId + ")"
+ " - 內容:" + mm.Message
+ " - 時間:" + mm.PublishTime.ToString();
}
}
}
實作相同介面,提供 XML 訊息處理邏輯:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Mediator
{
///
/// XML 方式操作 Message(ConcreteColleague)
///
public class XMLMessage : AbstractMessage
{
///
/// 建構函式
///
/// UserId
public XMLMessage(string userId)
: base(userId)
{
}
///
/// 接受 Message(由中介者調用)
///
/// 來自 UserId
/// Message 實體物件
/// 處理結果描述
public override string Insert(string from, MessageModel mm)
{
return "XML方式插入Message(" + from + "發送給" + base.UserId + ")"
+ " - 內容:" + mm.Message
+ " - 時間:" + mm.PublishTime.ToString();
}
}
}
userId,標識同事身份。Insert(string from, MessageModel mm) 由中介者呼叫,from 參數標識發送者。| 模式角色 | 本例類別 | 說明 |
|---|---|---|
| Mediator | AbstractMessageMediator | 抽象中介者介面 |
| ConcreteMediator | MessageMediator | 具體中介者,管理同事註冊與路由 |
| Colleague | AbstractMessage | 抽象同事,持有中介者引用 |
| ConcreteColleague | SqlMessage, XMLMessage | 具體同事,實作具體通訊邏輯 |