职责链模式(Chain of Responsibility)使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合关系,将这些对象链成一个链,沿着这条链传递请求,直到有对象能够处理请求为止。
无法预测请求处于那种类型每一个类碰到其不能处理的请求就放弃处理,从而降低了耦合性,但也带来的效率的损耗。
public class Request
{
public int Type { get; set; }
public Request(int type)
{
Type = type;
}
} // class Request
public abstract class Hanlder
{
protected Hanlder SuccessHandler { get; set; }
public abstract void RequestProcess(Request request);
} // class Hanlder
public class ProcessOne : Hanlder
{
public override void RequestProcess(Request request)
{
if (request.Type == 0)
{
}
else
{
if (SuccessHandler != null)
{
SuccessHandler.RequestProcess(request);
}
}
}
} // class ProcessOne
public class ProcessTwo : Hanlder
{
public override void RequestProcess(Request request)
{
if (request.Type == 1)
{
}
else
{
if (SuccessHandler != null)
{
SuccessHandler.RequestProcess(request);
}
}
}
} // class ProcessTwo
使用时实例化两个使用类,然后通过将第二个下一个类赋给前一个类的SuccessHanlder对象来建立链。然后从开始调用第一个对象执行请求处理即可。