我正在研究具有许多子类(称为A
和B
)的子源,这些子类使用方法interface Visitor
实现了常见的visitProgram
。当任何子类使用此方法(即A.visitProgram
或B.visitProgram
)时,是否有任何中断方法?可以使用其他语言解决方案,但是我不能重写现有的源代码。
最佳答案
由于您正在调试,因此我假设您可以添加一些新代码并构建整个内容。
就是说,您可以使用面向方面的编程(AOP)来获取捕获visitProgram的执行的切入点,并且从理论上讲,您可以将断点放在切入点中。您可以将AOP视为横向切入程序的技术(与构建“垂直”结构的OOP相反)。
在这种情况下,您想在每次运行visitProgram
(Visitor
接口的任何实例化)之前执行一些操作。这是横向切割,因此AOP应该适合您的需求。
基本上,您将具有一个函数,可以在其中设置一个断点,以便在调用visitProgram
时,程序将在执行之前立即暂停。
我建议使用Spring AOP,这非常简单,只需按照手册中的说明进行操作即可。您的切入点应如下所示:
@Aspect
public class BeforeVisitProgram {
@Before("visitProgram()")
public void doStuff() {
// break in here
}
}