課程
/后端開發(fā)
/Java
/模式的秘密---代理模式
最后那個作業(yè)是怎么實(shí)現(xiàn)的?
2014-11-29
源自:模式的秘密---代理模式 2-3
正在回答
樓上正解
接上面回答,調(diào)用時候得到日志記錄的對象后, 再通過LogHandler代理一次即可:代碼如下:
public?static?void?main(String[]?args)?{ Moveable?car?=?new?Car(); InvocationHandler?timeHandler?=?new?TimeHandler(car); Class<?>?cls?=?car.getClass(); /** *?loader:類加載器<br> *?interfaces:實(shí)現(xiàn)接口<br> *?h?InvocationHandler<br> */ Moveable?timeCar?=?(Moveable)?Proxy.newProxyInstance( cls.getClassLoader(),?cls.getInterfaces(),?timeHandler); InvocationHandler?logHandler?=?new?LogHandler(timeCar); Moveable?logCar?=?(Moveable)?Proxy.newProxyInstance( cls.getClassLoader(),?cls.getInterfaces(),?logHandler); logCar.move(); }
Mr_Vision
在寫一個日志代理
public class LogHandler implements InvocationHandler {
private Object target;
public LogHandler(Object target) {
super();
this.target = target;
}
/**
* 參數(shù)
* proxy 被代理對象
* method 被代理對象的方法
* args 方法的參數(shù)
*?
* 返回值:
* Object 方法的返回值
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("日志開始。。。");
method.invoke(target);
System.out.println("日志結(jié)束。。。");
return null;
西_瓜 提問者
JasonLau007 回復(fù) 西_瓜 提問者
舉報(bào)
本節(jié)課程將帶你領(lǐng)略Java編程語言中代理模式的奧妙
5 回答jdk動態(tài)代理實(shí)現(xiàn)作業(yè)怎么寫
3 回答作業(yè)怎么做啊
1 回答老師講課的時候隨時放大縮小屏幕是怎么實(shí)現(xiàn)的呀?
5 回答關(guān)于作業(yè)的問題
1 回答實(shí)現(xiàn)靜態(tài)代理的方式怎么有點(diǎn)像裝飾者模式?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-02-22
樓上正解
2015-01-09
接上面回答,調(diào)用時候得到日志記錄的對象后, 再通過LogHandler代理一次即可:代碼如下:
2014-12-16
在寫一個日志代理
public class LogHandler implements InvocationHandler {
private Object target;
public LogHandler(Object target) {
super();
this.target = target;
}
/**
* 參數(shù)
* proxy 被代理對象
* method 被代理對象的方法
* args 方法的參數(shù)
*?
* 返回值:
* Object 方法的返回值
*?
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("日志開始。。。");
method.invoke(target);
System.out.println("日志結(jié)束。。。");
return null;
}
}