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