代理

作者: 白纸糊 | 来源:发表于2019-03-27 16:12 被阅读0次
    package cn.alittle.Main.Refelct;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    
    import org.omg.CORBA.SystemException;
    import org.omg.CORBA.portable.InputStream;
    import org.omg.CORBA.portable.InvokeHandler;
    import org.omg.CORBA.portable.OutputStream;
    import org.omg.CORBA.portable.ResponseHandler;
    
    public class MyProxy implements InvocationHandler {
    
        private Object target;
    
        public MyProxy(Object target) {
            super();
            this.target = target;
        }
    
        @Override
        public Object invoke(Object proxy, Method methond, Object[] args) throws Throwable {
            System.out.println("校验");
            Object invoke = methond.invoke(target, args);
            System.out.println("记录");
            return invoke;
        }
       
    }
    

    package cn.alittle.Main.Refelct;
    
    import java.lang.reflect.Proxy;
    
    public class MyProxyFactory<T> {
            
            // 为指定target生成动态代理对象
        public  T getProxy(Object target) throws Exception {
            // 创建一个MyInvokationHandler对象
            MyProxy handler = new MyProxy(target);
            // 为MyInvokationHandler设置target对象
    //      handler.setTarget(target);
            // 创建、并返回一个动态代理对象
            return (T) Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler);
        }
    
    }
    
    

    package cn.alittle.Main.Refelct;
    
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.lang.reflect.Proxy;
    import java.util.ArrayList;
    
    import org.junit.Test;
    
    public class proxy {
    @Test
        public  void main() throws Exception {
        Student student = new Student();
            MyProxy myProxy = new MyProxy(student);
            //类的加载器 类的接口 类的代理
            School proxy = (School)Proxy.newProxyInstance(student.getClass().getClassLoader(), new Class[] {School.class},
                    myProxy);
            proxy.eat();
            
            MyProxyFactory<School> myProxyFactory = new MyProxyFactory<School>();
             School proxy2 = myProxyFactory.getProxy(student);
             proxy2.eat();
    //  try (BufferedReader bufferedReader = new BufferedReader(new FileReader(""))  ){
    //      
    //  }
      }
    }
    

    相关文章

      网友评论

          本文标题:代理

          本文链接:https://www.haomeiwen.com/subject/mnozvqtx.html