jdk代理
Car car = new Car();
?? ??? ?CarTimeProxy ctp = new CarTimeProxy(car);
?? ??? ?CarLogProxy clp = new CarLogProxy(ctp);
?? ????? InvocationHandler h2= new TimeHandler(clp);
?? ??? ?Class<?> c = car.getClass();
?? ??? ?/*
?? ??? ? * loader:類加載器; interfaces:實(shí)現(xiàn)接口; h:InvocationHandler
?? ??? ? */
?? ???? Movable m = (Movable) Proxy.newProxyInstance(c.getClassLoader(),
?? ??? ??? ??? ?c.getInterfaces(), h2);
?? ???? m.Move();
為什么這樣子做的話只能輸出日志線程,而輸出不了時(shí)間線程?
2017-07-21
代理的代理,就是將用時(shí)間增強(qiáng)過的代理再用日志增強(qiáng),這樣就可以同時(shí)輸出時(shí)間和日志,應(yīng)該對car的時(shí)間增強(qiáng)代理類增強(qiáng)日志功能。看不懂你的ctp和clp的意義何在,你可能將動態(tài)代理和靜態(tài)代理混淆了,你這里的代理處理器還是對時(shí)間的增強(qiáng),并沒有對日志增強(qiáng)的代理處理器。(動態(tài)代理是依據(jù)代理處理器來動態(tài)創(chuàng)建代理的。)
2017-07-21
CarTimeProxy ?和?Car ?類的代碼貼出來看看