已采纳回答 / David
您好: 我们在课程中介绍到了静态代理,讲解他的不足:会使我们系统内的类的规模增大(类膨胀),并且不易维护;并且由于被代理类和代理类的功能 本质上是相同的,被代理类只是起到了中介的作用,这种代理在系统中的存在,导致系统结构比较臃肿和松散。 为了解决这个问题,所以要动态地创建Proxy:在运行状态中,需要代理的地方,动态地创建一个Proxy,用完之后,就会销毁,这样就可以避免了Proxy 角色的class在系统中冗杂的问题了。 至于视频中演示动态代理的产生(生成java文...
2014-12-19
已采纳回答 / David
您好,很高兴收到你的问题,解答如下:JDK动态代理只能代理实现了接口的类,不是这个类(比如Car,实现Moveable接口)需要实现InvocationHandler,而是他的处理器(LogHandler)需要实现InvocationHandler接口。JDK动态代理它是在运行时生成的class,在生成它时你必须提供一组interface给它,然后该class就宣称它实现了这些 interface。你当然可以把该class的实例当作这些interface中的任何一个来用。当然,这个Dynamic Pro...
2014-12-16
已采纳回答 / David
我们看一下示例中的代码:/** * 拦截所有目标类方法的调用 * obj 目标类的实例 * m 目标方法的反射对象 * args 方法的参数 * proxy代理类的实例 */ @Override public Object intercept(Object obj, Method m, Object[] args, MethodProxy proxy) throws Throwable { System.out.println("日志开始..."); //代理类调用父类的方法 ...
2014-12-16