我在这里可能看起来很愚蠢。但是,我正在编写一些 python 代码,这件事让我印象深刻。在 python 中有一些称为装饰器的东西,它们由@
“周围”函数表示并使用,例如:
class PlotABC(metaclass=ABCMeta):
@property
def figure(self):
if self._figure is None: self.__create_figure()
return self._figure
@abstractmethod
def _prepare_series(self):
pass
我也知道一些设计模式,我知道有一些模式叫做装饰器。然后有一次我想,“嘿,也许名字相似并不是一个奇怪的巧合。”
我读过维基:装饰器模式和很好的答案如何制作函数装饰器链?(几乎全部)。
在我看来,python 的装饰器语义真的很强大,可以用来实现设计模式。因为它们允许环绕函数和方法。尽管如此,我仍然感到困惑,因为我对设计模式缺乏经验。我也不知道有一种语言为他们提供这种专用机制。
在 python 和设计模式方面有经验的人可以说是否故意创建 python 语义来创建装饰器模式?它是更多,更少,还是意味着不同的东西?
并且也许会阐明如何声明抽象方法或属性是如何装饰它的?