中介者模式中傳遞的訊息資料:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Mediator
{
///
/// 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.Mediator
{
///
/// 抽象中介者(Mediator)
///
public abstract class AbstractMessageMediator
{
///
/// 註冊一個操作 Message 的物件
///
/// AbstractMessage
public abstract void Register(AbstractMessage AbstractMessage);
///
/// 發送 Message
///
/// 來自 UserId
/// 發送到 UserId
/// Message 實體物件
/// 處理結果
public abstract string Send(string from, string to, MessageModel mm);
}
}
AbstractMessage 作為 Colleague 角色,應包含:
UserId 身份屬性AbstractMessageMediator 中介者引用Insert(string from, MessageModel mm) 抽象接收方法| 維度 | 中介者模式 | 觀察者模式 |
|---|---|---|
| 核心意圖 | 集中管理物件間雙向通訊 | 一對多單向通知 |
| 通訊方向 | 任意雙向 | 主題→觀察者單向 |
| 耦合度 | 同事只耦合中介者 | 觀察者耦合主題介面 |
| 控制邏輯 | 集中在中介者 | 分散在觀察者各自實作 |
| 典型場景 | 聊天室、表單驗證、工作流 | 事件通知、模型視圖同步 |