我参加了一个关于装饰器模式的会议,其中大部分提供的例子都是用Java编写的。例如,在下面的示例中,Pizza对象被两种配料装饰。
Pizza vegPizza = new ToppingsType1(new ToppingType2(new Pizza()))
在Python中,我看到装饰器被用于类似这样的场景。
@applyTopping2
@applyTopping1
makePizza():
pass
虽然我可以看到makePizza函数被两个函数装饰,但它与Java的基于类的方法有很大不同。我的问题是,Python装饰器是否严格实现了装饰器模式,还是实现略有不同但思想相同。
PS:我不确定在哪里查找装饰器模式的标准定义。尽管维基百科提供了一个动态语言(JS)的例子,但我的问题仍然成立 :)