也是一个类,在代理类中要调用目标类的方法,但是在方法的前后要加上系统的功能
如果采用工厂模式和配置文件的方式进行管理,则不需要修改客户端程序,在配置文件中配置是使用目标类,还是代理类,这样以后就很容易切换,譬如:想要日志功能时就配置代理类,否则配置目标类,这样增加系统功能很容易,以后运行一段时间后,邮箱去掉系统功能也很容易;
面向方面的编程AOP:系统中存在交叉业务,一个交叉业务就是要切入到系统中的一个方面。如:安全,事务,日志贯穿到了好多个模块。
那么就是要使交叉业务模块化,可以采用将切面代码移动奥原始方法的周围,这与直接在方法中编写切面代码的运行效果是一样的,利用代理正好可以解决这种问题。代理是实现AOP功能的核心和关键技术
JVM可以在运行期间动态生成出类的字节码,这种动态生成的类万网被用作代理类,即动态代理类。
JVM生成的动态类必须实现一个或多个接口,所以,JVM的动态类只能用作具有相同接口的目标类的代理。 |