复制代码

【03】 代理的意义

Java 代理说的白话一点就是,找个代替人帮你过滤东西,其实就是找个中间人,隔绝不合理请求

  此时 需要记住几个东西 。1.接口,接口实例,实例代理

  

package xvy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class _proxy {
    public static void main(String []arg)
    {
        StarProxy s  = new StarProxy();
        person p = s.getproxy();
        p.sing("雅俗共赏");
    }

}
interface  person{
    String sing(String  name);
    String dance(String name);
}
class Star implements person{
    public String sing(String  name){
        System.out.println( "Stars sing "+name  );
        return " Sing Over ";
    }
    public String dance(String name) {
        System.out.println( "Stars dance "+name  );
        return " Dance  Over ";
    }
}

class StarProxy {
    private  Star aStar = new Star();
    public person getproxy(){
        return  (person) Proxy.newProxyInstance(
                StarProxy.class.getClassLoader(),
                aStar.getClass().getInterfaces(),
                new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        if(method.getName().equals("sing"))
                        {
                            method.invoke(aStar,args);
                        }
                        else if(method.getName().equals("dance"))
                        {
                            method.invoke(aStar,args);
                        }
                        return null;
                    }
                }
        );
    }






}
View Code

此时 需要注意的是 我们先找到对应的代理人,然后告诉他,我要和你代理的那个人说话,通过代理人反射任务。

posted @ 2018-11-22 16:56  pg633  阅读(268)  评论(0编辑  收藏  举报