AOP(面向切面)算是一个比较热门的话题,以至于有一种论调说“AOP会替代OOP”,然而事实上AOP跟OOP的关注点并不相同。面向对象(OOP)的目的在于抽象 ,而面向切面(AOP)的目的在于解耦。
在Java中面向切面编程需要使用反射(动态代理)实现,操作比较麻烦。而在Python语言中则提供了一个很好用的语法糖–装饰器.
首先,声明一个简单的函数:
def foo():
print("function foo")
这个函数很简单,仅仅输出一句话.如果现在要给这个函数添加执行时间的功能,在不使用装饰器的情况下可能会这么写:
from datetime import datetime
def foo