main方法
ProxyFactory proxyFactory = new ProxyFactory();
Train train = new Train();
proxyFactory.setTarget(train);
DefaultPointcutAdvisor defaultPointcutAdvisor = new DefaultPointcutAdvisor();
defaultPointcutAdvisor.setAdvice(new MethodInterceptor() {
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
String name = methodInvocation.getMethod().getName();
System.out.println(name);
System.out.println("befor method train run ...");
Object proceed = methodInvocation.proceed();
System.out.println("after method train run ...");
return proceed;
}
});
proxyFactory.addAdvisor(defaultPointcutAdvisor);
Train proxy1 = (Train) proxyFactory.getProxy();
proxy1.move2();
代理目标类
public class Train {
public void move() {
System.out.println("火车行驶中");
}
public void move2() {
System.out.println("火车2行驶中");
}
}
使用代理模式增强Train类的方法执行
该博客介绍了如何通过代理模式来增强Train类的方法执行。具体实现中,创建了ProxyFactory并设置目标对象Train,然后利用DefaultPointcutAdvisor和MethodInterceptor实现方法调用前后的自定义逻辑,如打印方法名及添加before和after信息。最后,通过ProxyFactory获取Train的代理对象并调用move2方法,展示了代理模式的应用。
5363

被折叠的 条评论
为什么被折叠?



