JAVA动态代理(JDK版本)
1、摘要 在代理设计模式里,代理类扮演桥接使用方和实现方的角色。使用者通过代理类获得实现类的访问权限,并通过代理类定制执行业务逻辑前、后的处理流程。 2、背景 有时候你不想直接调用实现类的方法或者将实现类的方法"包装"到业务流程中。你很自然地想到采用"新增包含实现类引用的代理类"的方式。而静态代理和动态代理都可实现"代理模式"的需求。 3、原理阐述 静态代理和动态代理模式类图 图1 图2 图1、2分别是静态和动态代理的类图。基于对业务控制粒度控制的需求,ProxyActor是有必要的。如果直接在使用时实例化Abstractor,你的业务逻辑变得很分散,降低了代码可读性同时增大了维护成本。 当Abstractor类的方法持续增加,RealActor必须相应地增加实现方法,如果被代理的功能模块很多,代理代码量不可控。那我们自然会思考:有没有办法可以在Abstractor增加接口时自适应地兼容新增接口呢? 针对"自适应"的需求,无非是代理类要感知Abstractor新增接口。Java的反射机制为我们提供这种感知路径,我们可以通过反射获取接口申明的所有方法集合,从而实现"Abstractor增...