这篇文章主要介绍“Java静态代理怎么使用”,在日常操作中,相信很多人在Java静态代理怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java静态代理怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Java代理模式简单来说就是对目标方法的增强。
过年回家我们都要买火车票,前些年买火车票我们需要自己去售票厅买票,而有些地方有火车票的代售点,这些代售点离你很近,你可以很方便地买到火车票。这些代售点等同于代理,买票就是我们的目标,我们可以直接在这些代售点买票,简化了中间过程,节省了我们的时间,这就是Java代理模式的思想。
Java中常见的事务、日志都是代理模式的一个应用,只需要加上相应的注解就可以实现事务的开启和提交,我们可以把更多的时间花在具体业务的实现上,将事务的具体实现交给代理来做。
静态代理就是在程序运行之前,代理类的.class文件已经存在了。
静态代理需要先定义一个接口,让目标类和代理类同时实现这个接口,然后让代理类调用目标类,实现对目标类的功能增强。
买票接口
package com.teasir.spring.proxystatic; public interface BuyTicket { void buy(Double price); }
在售票厅买票
package com.teasir.spring.proxystatic; /** * 在售票厅买票 * */ public class BuyTicktImpl implements BuyTicket { @Override public void buy(Double price) { System.out.println("票面价格为:" + price); } }
在代售点买票
package com.teasir.spring.proxystatic; /** * 代售点帮助客户在售票厅买票 * 代售点帮客户方便地买到票,收了部分手续费,客户也很认可 * */ public class ProxyBuyTicketImpl implements BuyTicket { private BuyTicket buyTicket; public ProxyBuyTicketImpl(BuyTicket buyTicket) { this.buyTicket = buyTicket; } @Override public void buy(Double price) { System.out.println("客户非常方便地在楼下代售点买了票,付钱:"+price+"元,其中票价:"+(price-10)+"元,手续费:10元。"); buyTicket.buy(price - 10); } }
测试类
package com.teasir.spring.proxystatic; public class StaticProxy { public static void main(String[] args) { //目标方法:在售票厅买票 BuyTicktImpl buyTickt=new BuyTicktImpl(); //代理方法,代售点帮忙在售票厅买票 ProxyBuyTicketImpl proxyBuyTicket=new ProxyBuyTicketImpl(buyTickt); proxyBuyTicket.buy(110.00); } }
客户非常方便地在楼下代售点买了票,付钱:110.0元,其中票价:100.0元,手续费:10元。
票面价格为:100.0
静态代理虽然可以实现对目标类的增强,但从每个增强的目标类都要建立一个对应的代理类,这样还是会有不少重复代码的产生,复用性差。
到此,关于“Java静态代理怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。