.NET Framework 中是否使用了责任链?

w00*_*977 7 c# design-patterns

我正在尝试更多地了解责任链设计模式。我在网上看到的每个示例都给出了最简单的示例,即一个 Logger,它根据处理请求的处理程序将不同的消息写入控制台。

.NET 框架中是否有任何现实生活中的例子?我查看了以下链接:

  1. .NET Framework 中使用了哪些设计模式?
  2. http://www.dofactory.com/net/chain-of-responsibility-design-pattern

  3. https://sourcemaking.com/design_patterns/chain_of_responsibility

Evk*_*Evk 10

ASP.NET Core 使用此设计原则处理 Web 请求。每个 Web 请求都经过处理程序链(称为中间件),每个处理程序可能对请求执行某些操作,并决定请求是否应该转到链中的下一个处理程序。根据文档:

中间件是组装到应用程序管道中以处理请求和响应的软件。每个组件:

  • 选择是否将请求传递给管道中的下一个组件。
  • 可以在调用管道中的下一个组件之前和之后执行工作。

我认为,这是尽可能接近责任链。

此外,即使是常规的 .NET 事件也经常作为这一原则的实现。调用 .NET 事件会遍历订阅者列表(事件处理程序)并一个接一个地调用它们。许多事件(例如,WPF 中的 UI 事件,例如鼠标单击)Handled在其事件参数中都有布尔标志。事件处理程序可能会将此标志设置为true以通知链中的后续处理程序忽略此事件(因为它已被“处理​​”),或保留它false,通知链中的下一个处理程序它可能仍对其进行某些操作。这也是责任链的实现。