處理長度 5-9 字元的訊息,否則傳遞給上級:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.ChainOfResponsibility
{
///
/// 抽象處理者(Handler)角色
///
public class Leader : AbstractExecutor
{
///
/// 插入 Message
///
/// Message 實體物件
/// 執行者;內容;時間
public override string Insert(MessageModel mm)
{
string rtn = "";
// 插入的信息字符數小於 10
if (mm.Message.Length < 10)
{
SqlMessage m = new SqlMessage();
if (m.Insert(mm))
{
rtn = "執行者:主管" + " 內容:" + mm.Message + " 時間:" + mm.PublishTime.ToString();
}
}
// 否則讓上級去執行
else if (base._executor != null)
{
rtn = _executor.Insert(mm);
}
return rtn;
}
}
}
處理長度 10-14 字元的訊息,超出則拒絕:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.ChainOfResponsibility
{
///
/// 抽象處理者(Handler)角色
///
public class Manager : AbstractExecutor
{
///
/// 插入 Message
///
/// Message 實體物件
/// 執行者;內容;時間
public override string Insert(MessageModel mm)
{
string rtn = "";
// 插入的信息字符數小於 15
if (mm.Message.Length < 15)
{
SqlMessage m = new SqlMessage();
if (m.Insert(mm))
{
rtn = "執行者:經理" + " 內容:" + mm.Message + " 時間:" + mm.PublishTime.ToString();
}
}
else
{
rtn = "你所插入的Message不符合要求";
}
return rtn;
}
}
}
Client → Employee (長度<5)
│
├─ 滿足條件 → 執行 SqlMessage.Insert → 返回結果
│
└─ 不滿足 → _executor.Insert() → Leader (長度<10)
│
├─ 滿足條件 → 執行 → 返回
│
└─ 不滿足 → _executor.Insert() → Manager (長度<15)
│
├─ 滿足條件 → 執行 → 返回
│
└─ 不滿足 → 返回拒絕訊息
_executor != null)時委派給 _executor.Insert()。SqlMessage 執行真實插入操作。