django - 中间件是装饰器模式的实现吗?

标签 django design-patterns middleware

在 Django 中,有中间件的想法。它包括更改请求并将其传递给下一个中间件等,然后对响应执行相反的操作。

中间件是设计模式装饰器的实现吗?它们是装饰器的特例吗?它们之间有什么区别?

另外,在 Django 中实现 Decorator 和它的 GoF 描述有什么区别?

最佳答案

中间件和装饰器是相似的,可以做同样的工作。它们提供了一种在链/堆栈下游的其他效果之前或之后插入中间效果的方法。

不同之处在于中间件管道是使用简化计算的,该简化为中间件提供了一个更简单的接口(interface),该接口(interface)隐藏了链中的下一个中间件对象。相反,它提供了一个 next使用正确接口(interface)将消息应用到该对象的函数(例如 IHandler.handle )。

另一个区别是动态添加/删除中间件更容易,因为它存在于容器对象的中间(例如在数组中),并且可以按需组装管道。装饰器是一堆俄罗斯娃娃,它的堆不能轻易地重新调整。

关于django - 中间件是装饰器模式的实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48696631/

相关文章:

python - Django 多对多字段

python - Django-Rest-Framework 关系和超链接 API 问题

java - 在无操作的情况下返回 boolean 值/值而不是 null 是一个好习惯吗?

c# - 如何使用 Entity Framework 6 访问中间件中的数据库

python - python/django 中的重音字符被替换为\xed

oop - 为什么对象的类型引用它的接口(interface)? (设计模式: Elements of Reusable Object-Oriented Software book)

javascript - jQuery 方法教程

api - Redux 中间件,POST 请求

node.js - 如何将一组标准参数传递给 async.js 系列中的每个函数?

python - Django REST Framework 中的否定或排除过滤器