1700460960
//被代理的实例
1700460961
1700460962
Object obj=null;
1700460963
1700460964
//我要代理谁
1700460965
1700460966
public GamePlayIH(Object_obj){
1700460967
1700460968
this.obj=_obj;
1700460969
1700460970
}
1700460971
1700460972
//调用被代理的方法
1700460973
1700460974
public Object invoke(Object proxy,Method method,Object[]args)
1700460975
1700460976
throws Throwable{
1700460977
1700460978
Object result=method.invoke(this.obj,args);
1700460979
1700460980
//如果是登录方法,则发送信息
1700460981
1700460982
if(method.getName().equalsIgnoreCase(“login”)){
1700460983
1700460984
System.out.println(“有人在用我的账号登录!”);
1700460985
1700460986
}
1700460987
1700460988
return result;
1700460989
1700460990
}
1700460991
1700460992
}
1700460993
1700460994
看粗体部分,只要在代理中增加一个判断就可以决定是否要发送信息,运行结果如下:
1700460995
1700460996
开始时间是:2009-8-25 10:45
1700460997
1700460998
登录名为zhangSan的用户 张三登录成功!
1700460999
1700461000
有人在用我的账号登录!
1700461001
1700461002
张三在打怪!
1700461003
1700461004
张三又升了一级!
1700461005
1700461006
结束时间是:2009-8-26 03:40
1700461007
1700461008
太棒了!有人用我的账号就发送一个信息,然后看看自己的账号是不是被人盗了,非常好的方法,这就是AOP编程、AOP编程没有使用什么新的技术,但是它对我们的设计、编码有非常大的影响,对于日志、事务、权限等都可以在系统设计阶段不用考虑,而在设计后通过AOP的方式切过去。既然动态代理是如此地诱人,我们来看看通用动态代理模型,类图如图12-8所示。
1700461009
[
上一页 ]
[ :1.70046096e+09 ]
[
下一页 ]