麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

java代理 jdk動態代理應用案列

2019-11-26 16:17:31
字體:
來源:轉載
供稿:網友
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();
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91久久精品国产亚洲 | aa国产视频一区二区 | 成人精品一区二区三区中文字幕 | 色操网| 欧洲成人综合网 | 久久成人精品视频 | 蜜桃成品人免费视频 | 成人影片在线免费观看 | 色交视频| 新久草视频 | 欧美黑大粗硬毛片视频 | 国产午夜精品一区二区三区不卡 | 韩国精品一区二区三区四区五区 | a免费视频 | 亚洲一区二区三区日本久久九 | 国产精品亚洲综合一区二区三区 | 久久久国产一区二区三区 | 香蕉国产9 | 欧美成人精品一区 | 色婷婷久久一区二区 | 欧美日韩中文字幕在线视频 | 国产美女一区二区在线观看 | 999插插插 | 成人黄视频在线观看 | 国产女厕一区二区三区在线视 | 久久精品视频69 | 亚洲综合中文 | 国产一区精品在线观看 | 亚洲网站一区 | 久久不雅视频 | 欧美伦理一区二区 | 91短视频网页版 | 久久久成人一区二区免费影院 | 国产毛片视频 | 亚洲免费观看视频 | 18欧美性xxxx极品hd | 国产精品高潮99久久久久久久 | 欧美在线观看视频一区二区 | 国产一级一国产一级毛片 | 亚洲第一成人在线视频 | 久久艹综合 |