代理模式 | 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创建的时候会生成一个对接口生成一个代理对象