w00*_*977 7 c# design-patterns
我正在尝试更多地了解责任链设计模式。我在网上看到的每个示例都给出了最简单的示例,即一个 Logger,它根据处理请求的处理程序将不同的消息写入控制台。
.NET 框架中是否有任何现实生活中的例子?我查看了以下链接:
Evk*_*Evk 10
ASP.NET Core 使用此设计原则处理 Web 请求。每个 Web 请求都经过处理程序链(称为中间件),每个处理程序可能对请求执行某些操作,并决定请求是否应该转到链中的下一个处理程序。根据文档:
中间件是组装到应用程序管道中以处理请求和响应的软件。每个组件:
- 选择是否将请求传递给管道中的下一个组件。
- 可以在调用管道中的下一个组件之前和之后执行工作。
我认为,这是尽可能接近责任链。
此外,即使是常规的 .NET 事件也经常作为这一原则的实现。调用 .NET 事件会遍历订阅者列表(事件处理程序)并一个接一个地调用它们。许多事件(例如,WPF 中的 UI 事件,例如鼠标单击)Handled在其事件参数中都有布尔标志。事件处理程序可能会将此标志设置为true以通知链中的后续处理程序忽略此事件(因为它已被“处理”),或保留它false,通知链中的下一个处理程序它可能仍对其进行某些操作。这也是责任链的实现。
| 归档时间: |
|
| 查看次数: |
2589 次 |
| 最近记录: |