JDK动态代理

 

 

1.普通的接口UserManager:

package com.app;

public interface UserManager {
	public void addUser();
}

 

 

 

2.实现UserManager:

package com.app;

public class UserManaerImpl implements UserManager {
	public void addUser() {
			System.out.println("------addUser()---------");
	}
}

 

 

 

3.动态代理类:

package com.app;

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

public class SecurityHandler implements InvocationHandler {

	Object targetObject=null;
	public Object getProxyInstance(Object targetObject) {
		this.targetObject=targetObject;
		return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), 
				targetObject.getClass().getInterfaces(), this);
	}
	
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		checkSecurity();
			return method.invoke(targetObject, args);
	}
	
	
	private void checkSecurity(){
		System.out.println("-----------checkSecurity-------------");
	}

}

 

4.测试客户端:

package com.app;

public class client {
	public static void main(String[] args) {
		SecurityHandler sh=new SecurityHandler();
		UserManager um=(UserManager) sh.getProxyInstance(new UserManaerImpl());
		um.addUser(); 
	}
}

 

 

 

 

 

 

 

你可能感兴趣的:(JDK动态代理)