代理是基本的设计模式之一,它是你为了提供额外的或不同的操作,而插入的用来代替“实际”对象的对象。这些操作通常设计与“实际”对象的通信,因此代理通常充当着中间人的角色。
Java的动态代理比代理的思想更向前迈进了一步,因为它可以动态地创建代理并动态地处理对所代理方法的调用。在动态代理上所做的所有调用都会被重定向到单一的调用处理器上,它的工作是揭示调用的类型并确定相应的对策。通过调用Proxy.newProxyInstance()可以创建动态代理。(这是jdk提供的类和方法可以给我们来生成代理对象,不需要自己去创建增强类)
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class[] { Foo.class }, handler);
Proxy.newProxyInstance()有三个参数,参数1:和要被增强的对象一样的类加载器。参数2:和要被增强的对象一样的接口(1、根据指定的传递接口 返回下一个该接口下的实例2、传递的接口里面的方法就是可以被增强的所有方法)。参数3:所有的增强业务逻辑实现(方法)
上面的参数三,我们只需要new一下即可。(里面的内容是固定的)