using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignPattern
{
internal class ChainOfResponsibilityPattern
{
public void main() {
Handler handler1,handler2,handler3;
handler1 = new ConcreteHandlerA();
handler2 = new ConcreteHandlerB();
handler3 = new ConcreteHandlerC();
//创建职责链
handler1.SetSuccessor(handler2);
handler2.SetSuccessor(handler3);
//发送请求,请求对象通常为自定义类型
handler1.HandleRequest("请求对象");
}
}
//职责链模式(责任链模式)
//避免将一个请求的发送者和接收者耦合在一起,让多个对象都有机会处理请求,
//将接受请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理这个请求。
abstract class Handler
{
protected Handler successor;
public void SetSuccessor(Handler successor)
{
this.successor = successor;
}
public abstract void HandleRequest(string request);
}
class ConcreteHandlerA : Handler
{
public override void HandleRequest(string request)
{
if (true)//满足条件
{
//处理请求
}
else
{
this.successor.HandleRequest(request); //转发请求
}
}
}
class ConcreteHandlerB : Handler
{
public override void HandleRequest(string request)
{
if (true)//满足条件
{
//处理请求
}
else
{
this.successor.HandleRequest(request); //转发请求
}
}
}
class ConcreteHandlerC : Handler
{
public override void HandleRequest(string request)
{
if (true)//满足条件
{
//处理请求
}
else
{
this.successor.HandleRequest(request); //转发请求
}
}
}
}
《C#设计模式》==>职责链模式(责任链模式)
最新推荐文章于 2024-05-28 15:07:20 发布