静态代理:/**
* 在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();如何解决呢?
* 在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();如何解决呢?
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();
这样写就可以了..