欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

动态署理的工厂实现

更新时间: 2014-05-16 13:41:55 责任编辑: Author_N6

 

动态代理的工厂实现
动态代理的角色及其原理,见下文:
http://tiro-li.iteye.com/blog/1901678

动态代理的工厂类:DynamicProxyFactory.java
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class DynamicProxyFactory implements InvocationHandler
{
	//被代理的对象
	private Object proxyObj;
	
	private DynamicProxyFactory(Object obj)
	{
		this.proxyObj = obj;
	}
	
	//生成动态代理对象的工厂方法
	public static Object factory(Object obj)
	{
		return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),new DynamicProxyFactory(obj));
	}
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
	{
		//使用反射调用被代理对象的方法
		return method.invoke(proxyObj,args);
	}
}


测试类:Test.java

import java.util.ArrayList;
import java.util.List;

public class Test
{
	public static void main(String[] args)
	{
		List<String> list = (List<String>)DynamicProxyFactory.factory(new ArrayList<String>());
		
		list.add("hello");
		list.add("world");
		
		System.out.println(list);
	}
}

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-16 13:41:55
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/631677/
本文WWW.DOC100.NET DOC100.NET版权所有。