zoukankan      html  css  js  c++  java
  • 反射(动态代理)

    创建测试接口

    • 创建测试接口User
    public interface User {
    	public void add();
    	
    	public void delete();
    }
    

    实现接口

    • 实现接口中的方法
    public class UserImp implements User {
    
    	@Override
    	public void add() {
    		System.out.println("添加功能");
    	}
    
    	@Override
    	public void delete() {
    		System.out.println("删除功能");
    	}
    
    }
    

    InvocationHandler接口

    • InvocationHandler是由代理实例的调用处理程序实现的接口 。
    • 每个代理实例都有一个关联的调用处理程序。 当在代理实例上调用方法时,方法调用将被编码并分派到其调用处理程序的invoke方法。
    public class MyInvocationHandler implements InvocationHandler {
    	private Object target;
    	
    	public MyInvocationHandler(Object target) {
    		this.target = target;
    	}
    	@Override
    	public Object invoke(Object proxy, Method method, Object[] args)
    			throws Throwable {
    		System.out.println("权限校验");
    		method.invoke(target, args);	//执行被代理target对象的方法
    		System.out.println("日志记录");
    		return null;
    	}
    
    }
    

    测试

    public class Test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		UserImp ui = new UserImp();
    		ui.add();
    		ui.delete();
    		
    		System.out.println("-------------------------------");*/
    		/*
    		 * public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,
    		 * InvocationHandler h)
    		 */
    		MyInvocationHandler m = new MyInvocationHandler(ui);
    		User u = (User)Proxy.newProxyInstance(ui.getClass().getClassLoader(), ui.getClass().getInterfaces(), m);
    		u.add();
    		u.delete();
        }
    }
    
  • 相关阅读:
    021: class, objects and instance: 特殊方法与属性
    A simple website
    020: class, objects and instance: 一个简单的例子,压缩文件中内容的替换
    019: class, objects and instance: property
    018: class, objects and instance: static method
    python算法之归并排序
    python算法之希尔排序
    python算法之快速排序
    python算法之插入排序
    python算法之选择排序
  • 原文地址:https://www.cnblogs.com/PoetryAndYou/p/11213126.html
Copyright © 2011-2022 走看看