• 动态代理


    动态代理

    package test;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    //被代理类接口
    interface Buy{
    	public String buyc();
    }
    //被代理类
    class People1 implements Buy{
    
    	@Override
    	public String buyc() {
    		// TODO Auto-generated method stub
    		System.out.println("我要买一个飞机");
    		return "飞机买完了";
    	}
    }
    
    //代理工厂
    class ProxyF{
    	//获取代理类
    	public static Object getProxyInstance(Object obj) {
    		
    		//通过构造器将被代理类传值给InvocationHandler的实现类
    		InvocationHandler handler = new Invoca(obj);
    		return Proxy.newProxyInstance(
    				obj.getClass().getClassLoader(),
    				obj.getClass().getInterfaces(),
    				handler);
    	}
    }
    
    //InvocationHandler实现类
    class Invoca implements InvocationHandler{
    	Object obj; //被代理类
    	Invoca(Object obj){
    		this.obj = obj;
    	}
    	
    	
    	//代理类要做的事情
    	@Override
    	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    		// TODO Auto-generated method stub
    		System.out.println("开启服务");
    		Object robj = method.invoke(obj,args);
    		System.out.println("更新日志");
    		return robj;
    	}
    	
    }
    
    
    
    
    public class Z010_动态代理 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		People1 p = new People1();
    		Buy buy = (Buy) ProxyF.getProxyInstance(p);
    		String s = buy.buyc();
    	}
    }
    
    
  • 相关阅读:
    一.js高级(4)-函数调用-this指向-其他参数
    一.js高级(3)-原型及其继承
    一.js高级(2) -构造函数-原型对象
    curl ,post,get (原创)
    PDOHelper (原创)
    php 写日志函数(原创)
    一致性hash 算法 (转)
    md5 c# unicode 互换(原创)
    php auto_load mvc 接口框架(原创)
    php获取uniqid
  • 原文地址:https://www.cnblogs.com/yizhixiang/p/13324433.html
Copyright © 2020-2023  润新知