static方式
关键部分:需要通过proxy绑定具体的delegate
UserDao dao;
LogProxy(UserDao dao){
this.dao = dao ;
}
关键部分:需要通过proxy绑定具体的delegate
UserDao dao;
LogProxy(UserDao dao){
this.dao = dao ;
}
直接用被代理类的对象进行操作
dao.del(name);
dynamic方式
动态绑定
public Object bind(Object delegate)
key:return Proxy.newProxyInstance(cls.getClassLoader(),
cls.getInterfaces(), this);//绑定delegate
动态调用
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
key:method.invoke(delegate,args) //动态调用delegate中的方法