添加钩子而不更改源代码

Adding hook without changing source code

是否可以在不更改方法的情况下将钩子添加到方法中?例如:

public class class1{ 
    public void method1(){}
}
public class class2{
    public void method2(){}
}

现在如何在每次执行 method1() 时执行 method2(),而不更改 class1 中的任何内容?

这称为 AOP 或 Aspect Oriented Programming,并通过字节码操作实现。

Spring includes facilities for AOP.

AOP 的详细描述对于 Whosebug 来说太长了,而且是多余的,因为网络上有很多好的资源。

使用'Decorator pattern'扩展class1的功能。这种方法需要更改调用 class1

的代码