1700461110
1700461111
public void exec();
1700461112
1700461113
}
1700461114
1700461115
public class BeforeAdvice implements IAdvice{
1700461116
1700461117
public void exec(){
1700461118
1700461119
System.out.println(“我是前置通知,我被执行了!”);
1700461120
1700461121
}
1700461122
1700461123
}
1700461124
1700461125
最后就是看我们怎么调用了,如代码清单12-30所示。
1700461126
1700461127
代码清单12-30 动态代理的场景类
1700461128
1700461129
public class Client{
1700461130
1700461131
public static void main(String[]args){
1700461132
1700461133
//定义一个主题
1700461134
1700461135
Subject subject=new RealSubject();
1700461136
1700461137
//定义一个Handler
1700461138
1700461139
InvocationHandler handler=new MyInvocationHandler(subject);
1700461140
1700461141
//定义主题的代理
1700461142
1700461143
Subject proxy=DynamicProxy.newProxyInstance(subject.getClass().getClassLoader(),
1700461144
1700461145
subject.getClass().getInterfaces(),handler);
1700461146
1700461147
//代理的行为
1700461148
1700461149
proxy.doSomething(“Finish”);
1700461150
1700461151
}
1700461152
1700461153
}
1700461154
1700461155
运行结果如下所示:
1700461156
1700461157
我是前置通知,我被执行了!
1700461158
1700461159
do something!–->Finish
[
上一页 ]
[ :1.70046111e+09 ]
[
下一页 ]