
抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一个方法,以设定和返回对下家的引用。这个角色通常由一个抽象类或接口实现。
具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。

abstract class Handler

{
Handler next;
public Handler(Handler next)
{
this.next = next;
}
public Handler Next
{
get
{
return next;
}
set
{
next = value;
}
}
public void HandleRequest(Context context)
{
if (Next != null)
{
Next.HandleRequest(context);
}
else
{
//
.
Handle(context);
}
}
protected abstract void Handle(Context context);
}
class Handler1 : Handler

{
public Handler1(Handler next)
: base(next)
{
}
protected override void Handle(Context context)
{
}
}
class Handler2 : Handler

{
public Handler2(Handler next)
: base(next)
{
}
protected override void Handle(Context context)
{
}
}
class Client

{
public static void Process(Handler handler)
{
Handler.HandleRequest(
);
}
public static void Main()
{
Handler h = new Handler1(
new Handler2(
new Handler3(null)));

Process(h);
}
}


责任链设计模式解析
本文详细介绍了责任链设计模式的概念及其实现方式。通过多个对象构成的链来传递请求,并由链上的某个对象最终处理该请求。客户端不知道是哪个对象处理了请求,这样可以在不改变客户端的情况下动态调整链和分配责任。
731

被折叠的 条评论
为什么被折叠?



