有一个原始函数A,现在想要加上额外的功能,但是又不想破外本身代码。
这个函数B是自带其他功能的。
然后把函数A,当作一个函数B的参数,直接扔进去,结果就变成了:
然后最终把这个加上壳的函数A,重新再赋值给函数A
如图:
于是最终,最初的原始函数A,就变成了一个加了外壳新功能的函数A
这个就是装饰器。
打个不恰当的比喻,有点类似于电影《黑客帝国》里面人类的最后堡垒里面的外骨骼装甲机器人,都是一个普通的人类,然后坐上在了战斗机器里面,相当于给一个普通的人类穿上了一个战斗外套,这样既保留了人的特性,又给它加上了新功能,如图:
不知道我的理解对不对?