1、说明
Java中提供了一个动态代理类 Proxy,Proxy 并不是我们所说的代理对象的类,而是提供了一个创建代理对象的静态方法(newProxyInstance)来获取代理对象。
2、实例
publicclassHelloWorld{ publicstaticvoidmain(String[]args){ //获取代理对象 ProxyFactoryfactory=newProxyFactory(); SellTicketsproxyObject=factory.getProxyObject(); proxyObject.sell(); } } //卖票接口 interfaceSellTickets{ voidsell(); } //火车站,火车站具有卖票功能,所以需要实现SellTickets接口 classTrainStationimplementsSellTickets{ @Override publicvoidsell(){ System.out.println("火车站卖票"); } } //代理工厂,用来创建代理对象 classProxyFactory{ privateTrainStationstation=newTrainStation(); publicSellTicketsgetProxyObject(){ //使用Proxy获取代理对象 /** *newProxyInstance()方法参数说明: *ClassLoaderloader:类加载器,用于加载代理类,使用真实对象的类加载器即可 *Class<?>[]interfaces:真实对象所实现的接口,代理模式真实对象和代理对象实现相同的接口 *InvocationHandlerh:代理对象的调用处理程序 */ SellTicketssellTickets=(SellTickets)Proxy.newProxyInstance( station.getClass().getClassLoader(), newInvocationHandler(){ /** *InvocationHandle中invoke方法参数说明: *proxy:代理对象 *method:对应于在代理对象上调用的方法的Method实例 *args:代理对象调用接口方法是传递的实际参数 */ publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{ System.out.println("代理点收取一些服务费用(JDK动态代理方法)"); //执行真实对象 Objectresult=method.invoke(station,args); returnresult; } }); returnsellTickets; } }原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容