通常情况下, 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类。我们把微商代理和厂家进一步抽象,前者可抽象为代理类,后者可抽象为委托类。代理类在程序运行时创建的代理方式被成为 动态代理。也就是说,这种情况下,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。相比于静态代理, 动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类的函数。我们还是以上面例子中的Vendor类作为委托类,BusinessAgent类作为代理类来进行介绍。因此我们只需在中介类的invoke方法实现中输出“before”,然后调用委托类的invoke方法,再输出“after”。

十分钟理解Java中的动态代理

十分钟理解Java中的动态代理

十分钟理解Java中的动态代理

十分钟理解Java中的动态代理

十分钟理解Java中的动态代理