java代理 jdk动态代理应用案列

天象师

天象师

2016-02-19 11:35

下面是个简单易学的java代理 jdk动态代理应用案列教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!
java代理有jdk动态代理、cglib代理,这里只说下jdk动态代理,jdk动态代理主要使用的是java反射机制(既java.lang.reflect包)
原理是(歌手、经纪人做例子):
建立一个公共的接口,比如:歌手public interface Singer;
用具体的类实现接口,比如:周杰伦,他是歌手所以实现Singer这个类,class MySinger implements Singer
建立代理类,这里也就是经纪人,他需要实现InvocationHandler类,并重写invoke方法
这样当有什么事情,要找周杰伦(具体类)的时候,就必须先到经纪人(代理类)那里处理,代理人在决定要不要与你见面(该方法要不要执行)
1、歌手接口
代码如下:

public interface Singer {

public abstract void sing();

public abstract String s();
}

2、具体的歌手
代码如下:

public class MySinger implements Singer {
public void sing() {
// TODO Auto-generated method stub
System.err.println("唱歌。。。。");
}
}

3、代理类(经纪人)
代码如下:

public class agent implements InvocationHandler{
public Object target;

//绑定
public Object bind(Object target){
this.target=target;
//必须放回Proxy
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}

//重新
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object o =null;
System.out.println("开始事务");
System.out.println("判断权限");

o = method.invoke(target, args);//执行方法

System.out.println("结束事务");
return o;
}
}

4、测试(为什么要间接口能,下面你会发现代理返回的是他们的接口类,这要一个代理类,就可以代理多个类,只要该类是同个一个接口的是实现)
代码如下:

public class Test {
public static void main(String[] args) {
//
agent a =new agent();
Singer s= (Singer) a.bind(new MySinger());
s.sing();
}
}
展开更多 50%)
分享

猜你喜欢

java代理 jdk动态代理应用案列

编程语言 网络编程
java代理 jdk动态代理应用案列

代理模式之Java动态代理实现方法

编程语言 网络编程
代理模式之Java动态代理实现方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java 静态代理 动态代理深入学习

编程语言 网络编程
java 静态代理 动态代理深入学习

Java动态代理实现AOP

Java JAVA基础
Java动态代理实现AOP

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java编程应用:使用动态代理实现AOP功能

编程语言 网络编程
Java编程应用:使用动态代理实现AOP功能

关于动态代理

编程语言 网络编程
关于动态代理

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

java 递归深入理解

java 递归深入理解

IOS使用progssview仿滴滴打车圆形计时

IOS使用progssview仿滴滴打车圆形计时
下拉加载更多内容 ↓