静态代理:/**
* 在tank t外面包了一层log,再在log外面包了一层time
 */
Tank t = new Tank();
TankLogProxy tlp = new TankLogProxy(t);
TankTimeProxy ttp = new TankTimeProxy(tlp);
Moveable m = ttp;
m.move();上面可以实现代理叠加和代理之间的交换;动态代理:UserMgr mgr = new UserMgrImpl();
InvocationHandler h = new TransactionHandler(mgr);
//InvocationHandler h2 = new TimeHandler(h); 
UserMgr u = (UserMgr)Proxy.newProxyInstance(UserMgr.class,h);//打算传参h2实现代理的叠加,但是不能实现
u.addUser();
u.delUser();如何解决呢?

解决方案 »

  1.   

    不太明白你的意思,如果说是h与h2的功能叠加代理的话,你写一个静态代理类,把h和h2,都叠加起来然后再invecationhandler这个拦截器中调用的静态代理类的方法就行了,其他方法也不会了,或者你上网看看拦截器栈的写法或许会有点提示,希望你早日解决
      

  2.   

    UserMgr mgr = new UserMgrImpl();
    InvocationHandler h = new TransactionHandler(mgr);
    //InvocationHandler h2 = new TimeHandler(Proxy.newProxyInstance(UserMgr.class,h)); 
    UserMgr u = (UserMgr)Proxy.newProxyInstance(UserMgr.class,h2);
    u.addUser();
    u.delUser();
    这样写就可以了..