设计模式的通俗理解代理模式
作者 | 浩说编程
来源 | 公众号:浩说编程
[ 大厂技术资源 | 研发必备安装包 | 限时免费获取 ]
本文能为读者创造的价值:了解什么是代理模式代理模式的作用代理模式的应用场景代理的实现方式
一、什么是代理模式
代理模式是在用户与请求的服务之间增加一层代理类用于拦截请求,并在代理类中对请求的服务做业务扩展,以达到业务解耦的目的。也就是说用户不直接与服务交互,用户的请求会先经过代理类,然后代理类与真正的服务交互。
场景模拟:"你的项目里日志记录是怎么做的"
这个问题读者在面试的时候大概率会被问到,其实本质是在问你"代理模式如何实现",这正是本篇文章对读者的价值所在。日志记录操作跟主业务并无关联,为了代码解耦,提高扩展性,考虑将这部分逻辑分离出来,于是代理模式就成了最佳思路。
来看具体实现方式:
码文不易
你的关注是浩说编程持续更新的动力
浩说编程会做的更好
准备工作,先定义一个服务(producer)
一、静态代理
调用代理类:
以上就是静态代理。通过代码和其中的注释读者应该对代理模式有所体会。不过这里想跟读者科普一个专业术语:方法增强(知道的读者可以直接跳过直接看动态代理了)。
方法增强是指对原方法进行解耦式的业务扩展,上面接口代理类中的makeProduct()方法就是对原实现类方法做了方法增强,请读者细细体会。
之所以要跟读者特别说明一些专业术语是因为它是我们专业水平的一个体现,相像一下你跟小白萌妹子科普方法增强概念的场景,你的身后是带着光的。
它对我们不管是日常工作交流还是面试都很有帮助。好了回归正题,继续下一种实现方式:
二、动态代理
通过静态代理我们实现了日志记录和主业务的解耦。现在需要普及这个模式了,把项目里所有的接口都做代理,那么问题来了,那么多接口每个都要创建个代理类,工作量难以想象,那怎么办呢?使用动态代理。
来看一下动态代理的设计思路:不需要读者自己创建代理类。而是创建一个公共的代理配置类,在某个服务需要做代理的时候通过代理配置类自动生成对应服务的代理类。也就是说在需要的时候自动创建代理类,这就是所谓的"动态"。
看代码实现:还是之前的ProducerService服务
调用示例:
动态代理的实现逻辑比较复杂,读者需要反复阅读几次,多加推敲,才能慢慢理解,先不要着急往下看,多体会几次上面的逻辑思路。
总结一下动态代理的思路:
1、 创建代理配置类并实现InvocationHandle接口
2、重写InvocationHandle接口的invoke()方法(用于对原服务方法的业务扩展)
3、分别创建原服务、代理配置类对象
4、通过Proxy类的newProxyInstance方法指定并生成需要被代理的服务(传入步骤3创建的对象)
5、通过4生成的代理类对象,调用服务
动态代理模式不管是面试还是实际工作中都比较重要,所以上面的示例建议读者多读几次,仔细体会这个过程。
作者 | 浩说编程
来源 | 公众号:浩说编程
苹果警告,销售额或骤减80亿美元当地时间周四,尽管美国宏观经济数据意外大幅下滑,但在科技巨头亮眼财报的推动下,科技类股大幅反弹,带领纽约股市三大股指集体收涨。截至收盘,道指涨1。85,标普500指数涨2。47,纳
马斯克据悉在收购推特谈判中谈及裁员与变现问题MarketWatch4月29日消息,据悉,特斯拉CEO马斯克在就440亿美元收购推特的谈判中,与银行人士讨论了这家新闻和社交网络平台裁员以及如何变现的问题。据彭博报道,马斯克没有
多家网络平台用错字,账与帐你用对了吗?来源武汉晚报账号才是规范用法武汉晚报讯(记者张维纳)4月28日,一名读者致电本报求助自己经常用微信,是微信帐号还是微信账号,希望记者向专家求证给个准确说法,以免用错了。根据读者反映
一文看懂垂直型平台型跨境型电商平台的区别互联网发展到今天,电子商务无疑是最具体的落地方式之一,电商平台犹如一个巨大的试炼场,随着互联网的进阶也在不断的进化,从最初只是单纯融合买卖双方的各种需求,提供人们进行购物的网站或手
根据模板生成word文档并填充数据Acess数据库功能VBA代码OptionCompareDatabaseOptionExplicitPrivateSubCommand生成Click()OnErrorGoTooutputerror输入文件名Di
想买新能源车之前,想想自己有没有被忽悠再说你可以买电动车,但是我不愿意被忽悠着去买。记住了,但凡你看见什么零首付,终身什么免维护这些字眼儿,那就离坑不远了。哎,你发现这些车都不便宜,对吧?什么理想,未来小鹏至少比比亚迪得高
显示IP地址以后的影响大吗?这几年刚学会上网的人感觉隐私被暴露了,营销号和带货号不好忽悠人了,喷子怕被人抓出来其实有互联网那天,所有的网站软件就有这个统计功能,IP地址甚至能细致到定位几百米范围内,基本上每个
iPhone14正面机模曝光!刘海真没了机模本文支持暗黑模式MacOtakara网站近年几乎都有爆料苹果机模,今年也是如约带来了iPhone14全系的机模实拍图,还是一如既往的塑料感,真是名副其实的机模。图片来源于Mac
服务器安全加固Linux一账号和口令1。1禁用或删除无用账号查看etcpasswd文件查看是否有无用的账号,如果存在则删除,降低安全风险。操作步骤使用命令userdel用户名删除不必要的账号。使用命令pa
印度称通过非法汇款扣押了7。25亿美元的小米资金新德里,4月30日(路透社)印度周六表示,在一项调查发现智能手机制造商通过假冒外国实体向外国实体非法汇款后,已从中国小米公司(1810。HK)的当地银行账户中扣押了7。25亿美元。
键盘侠,收手吧!外面都是IP归属地显示近期互联网各大内容平台将开始就用户IP属地显示相继发布公告。前阵子我也写过一篇类似的文章。截止今天,头部内容平台基本都已经实现IP属地显示。继抖音百度小红书微博已经实现该功能以外,