在 Django 中,有中间件的想法。它包括更改请求并将其传递给下一个中间件等,然后对响应执行相反的操作。
中间件是设计模式装饰器的实现吗?它们是装饰器的特例吗?它们之间有什么区别?
另外,在 Django 中实现 Decorator 和它的 GoF 描述有什么区别?
最佳答案
中间件和装饰器是相似的,可以做同样的工作。它们提供了一种在链/堆栈下游的其他效果之前或之后插入中间效果的方法。
不同之处在于中间件管道是使用简化计算的,该简化为中间件提供了一个更简单的接口(interface),该接口(interface)隐藏了链中的下一个中间件对象。相反,它提供了一个 next
使用正确接口(interface)将消息应用到该对象的函数(例如 IHandler.handle
)。
另一个区别是动态添加/删除中间件更容易,因为它存在于容器对象的中间(例如在数组中),并且可以按需组装管道。装饰器是一堆俄罗斯娃娃,它的堆不能轻易地重新调整。
关于django - 中间件是装饰器模式的实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48696631/