Discuss / Java / AOP就是Python中的装饰器

AOP就是Python中的装饰器

Topic source

Java中没有装饰器的概念,注解跟装饰器有点像,但又不一样。注解其实就是一个标记而已,需要自己去解释它的含义,而且这个解释也需要自己主动调用去才会执行。

注解的这种定义可以使其实现很多功能。Python中的装饰器,我个人理解也可以认为是注解,但使用范围比注解小,而且它是一个可调用对象,Python会自动执行它。

由于Java中没有装饰器,但装饰器模式又的确很常用,所以由框架或第三方库实现,即Spring中的AOP,以及AspectJ库。

AOP是用注解的方式实现了装饰器,但相对Python的装饰器,唯一让人感觉有点怪的地方是注解的定义与注解的解释是放在两个不同的类中,如果能放在一个类中更好。

但Java对注解的设计不支持这样做,不知道以后会不会改进。

深蓝738

#2 Created at ... [Delete] [Delete and Lock User]

对下面这句话的回复。

唯一让人感觉有点怪的地方是注解的定义与注解的解释是放在两个不同的类中,如果能放在一个类中更好。

java 的注解只是一个标记。完全可以有不同场景的实现。放在一起还是绑的太死了。

枚举也可以看成一种标记,但是枚举却经常和实现类写在一起。(当然分开的也很常见)

这里我的理解是有没有注解方法的执行不影响主体方法的执行,但是枚举确实方法执行的必要条件。


  • 1

Reply