1、说明
java中提供了一个动态代理类 proxy,proxy 并不是我们所说的代理对象的类,而是提供了一个创建代理对象的静态方法(newproxyinstance)来获取代理对象。
2、实例
public class helloworld { public static void main(string[] args) { // 获取代理对象 proxyfactory factory = new proxyfactory(); selltickets proxyobject = factory.getproxyobject(); proxyobject.sell(); }} // 卖票接口interface selltickets { void sell();} // 火车站,火车站具有卖票功能,所以需要实现selltickets接口class trainstation implements selltickets { @override public void sell() { system.out.println(火车站卖票); }} // 代理工厂,用来创建代理对象class proxyfactory { private trainstation station = new trainstation(); public selltickets getproxyobject() { // 使用proxy获取代理对象 /** * newproxyinstance() 方法参数说明: * classloader loader: 类加载器,用于加载代理类,使用真实对象的类加载器即可 * class<?>[] interfaces:真实对象所实现的接口,代理模式真实对象和代理对象实现相同的接口 * invocationhandler h:代理对象的调用处理程序 */ selltickets selltickets = (selltickets) proxy.newproxyinstance( station.getclass().getclassloader(), new invocationhandler() { /** * invocationhandle中invoke方法参数说明: * proxy:代理对象 * method:对应于在代理对象上调用的方法的method实例 * args:代理对象调用接口方法是传递的实际参数 */ public object invoke(object proxy, method method, object[] args) throws throwable { system.out.println(代理点收取一些服务费用(jdk动态代理方法)); // 执行真实对象 object result = method.invoke(station, args); return result; } }); return selltickets; }}
以上就是java之jdk动态代理实例分析的详细内容。