java动态代理详解

来源:互联网 发布:nginx限制ip访问 编辑:程序博客网 时间:2024/05/31 15:19

java代理可分为动态代理静态代理

代理模式的作用:为其他的对象提供一种代理以访问真实的对象,作用类似于“中介


静态代理:包含三个角色

  1.抽象角色:真实的对象与代理对象共同实现的接口或抽象类

  2.代理角色:内部包含了对真实对象的引用,其实现的方法内部实际上调用的是真实的角色的对象,是对真实角色的一种封装。

   3.真实角色:最终操作的那个对象。

 抽象角色

                                     

package com.qidian.proxy;//抽象的角色,也可定义成抽象类public interface AbsInteface{public void rent();//租房子}
真实角色

package com.qidian.proxy;//真实的角色实现了共同的抽象接口public class RealRole implements AbsInteface{@Overridepublic void rent(){System.out.println("房东租房子!!!");}}

代理角色

package com.qidian.proxy;//代理类也实现了共同的契约public class ProxyRole implements AbsInteface{RealRole real;//真实类的引用@Overridepublic void rent(){                 //实际上操作的还是真实类//真实类是一个“枪手”RealRole realRole = (real == null ? new RealRole() : real);realRole.rent();}}
测试的环境

package com.qidian.proxy;public class ProxyTest{public static void main(String[] args){AbsInteface abs = new ProxyRole();abs.rent();// 房东租房子!!!}}

       动态代理

                  java动态代理类位于java.lang.reflect包下面主要涉及两个类:Interface InvocaionHandler 接口和Proxy类

                 未完待续……