欢迎使用CSDN-markdown编辑器

来源:互联网 发布:网络兼职诈骗怎么报案 编辑:程序博客网 时间:2024/06/05 02:29
interface RentInter{    void print();    String request(float price);}class RentSub implements  RentInter{    @Override    public void print() {        System.out.println("我要租一套房子!");    }    @Override    public String request(float price) {        String s = "我的心理价位是:" + price;        return s;    }}class RentHandler implements InvocationHandler{    private Object obj;    public Object bind(Object obj){        this.obj = obj;        return Proxy.newProxyInstance(obj.getClass().getClassLoader() , obj.getClass().getInterfaces() , this);    }    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        System.out.println("借钱之前");        System.out.println("Method:" + method);        Object o = method.invoke(obj, args);        System.out.println("借钱之后");        return o;    }}public class Rent {    public static void main(String[] args) {        RentHandler handler = new RentHandler();        RentInter rentInter = (RentInter) handler.bind(new RentSub());        rentInter.print();        System.out.println(rentInter.request(15.5f));    }}

InvocationHandler接口:
public interface InvocationHandler {
public Object invoke(Object proxy,Method method,Object[] args) throws Throwable;
}
参数说明:
Object proxy:指被代理的对象。
Method method:要调用的方法
Object[] args:方法调用时所需要的参数
可以将InvocationHandler接口的子类想象成一个代理的最终操作类,替换掉ProxySubject。
Proxy类:
Proxy类是专门完成代理的操作类,可以通过此类为一个或多个接口动态地生成实现类,此类提供了如下的操作方法:
public static Object newProxyInstance(ClassLoader loader, Class

0 0
原创粉丝点击