原文:乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)
[索引页][源码下载]
乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)
作者:webabcd
介绍
为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
示例
有一个Message实体类,某个类对它的操作有Insert()方法。现在要求根据插入信息的字符长度,让不同的对象去处理,这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

MessageModel
SqlMessage
AbstractExecutor
Employee
Leader
Manager
client

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;


using Pattern.ChainOfResponsibility;


public partial class ChainOfResponsibility : System.Web.UI.Page



{

protected void Page_Load(object sender, EventArgs e)


{

AbstractExecutor employee = new Employee();

AbstractExecutor leader = new Leader();

AbstractExecutor manager = new Manager();

employee.SetSuccessor(leader);

leader.SetSuccessor(manager);


Response.Write(employee.Insert(new MessageModel("abcd", DateTime.Now)));

Response.Write("<br />");

Response.Write(employee.Insert(new MessageModel("abcdefgh", DateTime.Now)));

Response.Write("<br />");

Response.Write(employee.Insert(new MessageModel("abcdefghigkl", DateTime.Now)));

Response.Write("<br />");

Response.Write(employee.Insert(new MessageModel("abcdefghigklmnop", DateTime.Now)));

}

}
运行结果
执行者:雇员 内容:abcd 时间:2007-4-22 20:04:41
执行者:主管 内容:abcdefgh 时间:2007-4-22 20:04:41
执行者:经理 内容:abcdefghigkl 时间:2007-4-22 20:04:41
你所插入的Message不符合要求
参考
http://www.dofactory.com/Patterns/PatternChain.aspx
OK
[源码下载]