前些时候了解了代理模式,代理模式允许我们帮助一个对象去访问另一个对象。但是他有一个缺点就是代理类所实现的接口和所代理的方法都被固定,那么如果要为不同的类提供代理,就需要增加新的代理类,这将导致系统中类的数量急剧增加,上面这种方式也称为静态代理。下面来介绍下动态代理,动态代理可以让系统根据需要来动态创建代理类,让同一个代理类能够代理多个不同的类。java动态代理包括jdk动态代理和cglig动态代理,这里只简单介绍jdk动态代理。
2.jdk动态代理实现
解析:在jdk动态代理实现中, MyInvocationHandler类 通过实现 InvocationHandler 接口创建自己的调用处理器;并实现了接口中的invoke方法,在invoke方法中,如果传入的执行method的方法名为 getName,则走if语句进行必要的业务逻辑处理,如果不是 getName方法名,则走else直接调用接口方法。从打印结果中可以看出程序调用的过程。
下面来通过代码进一步说明:
1. 定义接口和实现
2.jdk动态代理实现
解析:在jdk动态代理实现中, MyInvocationHandler类 通过实现 InvocationHandler 接口创建自己的调用处理器;并实现了接口中的invoke方法,在invoke方法中,如果传入的执行method的方法名为 getName,则走if语句进行必要的业务逻辑处理,如果不是 getName方法名,则走else直接调用接口方法。从打印结果中可以看出程序调用的过程。