java dynamic proxy,动态代理

package dynamicproxy;
public interface SimpleInterface {
	void doSth();
	void doSthElse(String s);
}

  

package dynamicproxy;

public class RealObject implements SimpleInterface {

	@Override
	public void doSth() {
		System.out.println("Real Object do sth");
		
	}

	@Override
	public void doSthElse(String s) {
		System.out.println("Real Object do sth Else:"+s);		
	}

}
package dynamicproxy;

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

public class DynamicProxyHandler implements InvocationHandler {

	private Object object;
	public DynamicProxyHandler(Object o){
		this.object=o;
	}
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		System.out.println("DynamicProxyHandler process.传来的代理:"+ proxy.getClass());
		return method.invoke(object, args);
	}

}
package dynamicproxy;

import java.lang.reflect.Proxy;

public class Test {

	static void consumer(SimpleInterface obj){
		obj.doSth();
		obj.doSthElse("你去处理一下");
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		RealObject obj=new RealObject();
		consumer(obj);
		
		SimpleInterface proxObj = (SimpleInterface) Proxy.newProxyInstance(
				SimpleInterface.class.getClassLoader(),
				new Class[] { SimpleInterface.class },
				new DynamicProxyHandler(obj));
		consumer(proxObj);
	}

}
posted @ 2011-03-16 19:17  庚武  Views(341)  Comments(1Edit  收藏  举报