打字猴:1.70046101e+09
1700461010
1700461011
1700461012
1700461013 图12-8 动态代理通用类图
1700461014
1700461015 很简单,两条独立发展的线路。动态代理实现代理的职责,业务逻辑Subject实现相关的逻辑功能,两者之间没有必然的相互耦合的关系。通知Advice从另一个切面切入,最终在高层模块也就是Client进行耦合,完成逻辑的封装任务。我们先来看Subject接口,如代码清单12-25所示。
1700461016
1700461017 代码清单12-25 抽象主题
1700461018
1700461019 public interface Subject{
1700461020
1700461021 //业务操作
1700461022
1700461023 public void doSomething(String str);
1700461024
1700461025 }
1700461026
1700461027 其中的doSomething是一种标识方法,可以有多个逻辑处理方法,实现类如代码清单12-26所示。
1700461028
1700461029 代码清单12-26 真实主题
1700461030
1700461031 public class RealSubject implements Subject{
1700461032
1700461033 //业务操作
1700461034
1700461035 public void doSomething(String str){
1700461036
1700461037 System.out.println(“do something!–->”+str);
1700461038
1700461039 }
1700461040
1700461041 }
1700461042
1700461043 重点是我们的MyInvocationHandler,如代码清单12-27所示。
1700461044
1700461045 代码清单12-27 动态代理的Handler类
1700461046
1700461047 public class MyInvocationHandler implements InvocationHandler{
1700461048
1700461049 //被代理的对象
1700461050
1700461051 private Object target=null;
1700461052
1700461053 //通过构造函数传递一个对象
1700461054
1700461055 public MyInvocationHandler(Object_obj){
1700461056
1700461057 this.target=_obj;
1700461058
1700461059 }
[ 上一页 ]  [ :1.70046101e+09 ]  [ 下一页 ]