代理模式 | jdk动态代理

创建一个接口:

  

public interface gongnen {
        void xiaomubiao();
}

在创建一个接口的实现类  

(真实对象)

public class LaoZhong  implements gongnen{
    public void xiaomubiao() {
        System.out.println("小目标");
    }
}
  

创建一个类实现InvocationHandler接口

  

private LaoZhong lao =new LaoZhong();
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("预约时间");
        Object result = method.invoke(lao, args);
        System.out.println("访客信息");
        return result;
    }

创建一个测试类:

    System.out.println(visitor.class.getClassLoader()==LaoZhong.class.getClassLoader());  //判断加载器
            mishu mishu=new mishu();
            
            /* 第一个参数 :反射时使用的类加载器
             *     二        :Proxy需要实现什么接口
             *     三    :通过接口对象调用方法时需要调用那个类的invoke方法
             */ 
            gongnen pi = (gongnen) Proxy.newProxyInstance(visitor.class.getClassLoader(), new Class[] {gongnen.class} , mishu);
            pi.xiaomubiao();
        

总结:

    当Proxy.newProxyInstance创建的时候会生成一个对接口生成一个代理对象

posted @ 2019-10-26 22:37  konge!  阅读(76)  评论(0编辑  收藏  举报