关系经济人类预测化学自然
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

Java使用多态给项目解耦

1月1日 心碎巷投稿
  原文链接:https:www。cnblogs。comAlickxp16368364。htmlJavaSpringBoot使用多态给项目解耦提及
  今天在打算维护一下智慧社区这个项目的时候,想到项目是使用Satoken这个开箱即用的授权和认证的组件,因为在项目开启的时候对SpringSecurity并不熟悉,而Satoken类似傻瓜式的,导入依赖进去,配置一下获取权限和角色的方法即可使用。
  但是由此带来的问题就是,项目中充斥着Satoken的API方法,类似于StpUtil。isLogin(),StpUtil。getLoginIdAsLong()这类方法在Service层中已经是相当常见了,尽管是非常的方便,但是带来的问题就是假如后面我要替换另外一款权限认证和授权的组件,那么这些API方法通通都需要进行修改,这种强耦合很明显是不合理的。
  我突然想到在SpringSecurity中,配置密码加密方法的时候,我们可以选择任意的密码加密方法。BeanpublicPasswordEncodergetPasswordEncoder(){returnnewBCryptPasswordEncoder();}
  那么,我能不能也像这样子,提供一个统一的接口,通过选择实现方式的不同,从而达到当需要更换别的实现方式的时候,只需要更改该处代码即可。多态
  其实这需要利用到Java的三大特性之一,多态。Java的三大特性分别是封装,继承和多态。
  这里使用一个小例子来演示一下什么是多态。
  我们先创建一个接口,这个接口只需要含有我们统一所需的方法。Author:AlickxDate:2022061216:22Description:统一接口publicinterfaceIRun{跑步voidrun();}
  然后我们需要来创建几个实现该接口的实现类
  分别是Man。java和Woman。java
  Author:AlickxDate:2022061216:27Description:男人的实现类publicclassManimplementsIRun{Overridepublicvoidrun(){System。out。println(我是Man,我在run);}}
  Author:AlickxDate:2022061216:27Description:女人的实现类publicclassWomanimplementsIRun{Overridepublicvoidrun(){System。out。println(我是Woman,我在run);}}
  接着上面的提及,我们把Man和Woman想成是不同密码加密方式,而run方法则是他们都需要实现的密码加密方法。
  那我们试着让这几个类型实例化。
  Author:AlickxDate:202206129:13Description:main方法publicclassDemo8{publicstaticvoidmain(String〔〕args){使用man来实例化IRunhuman1newMan();human1。run();使用woman来实例化IRunhuman2newWoman();human2。run();}}
  这里可以看出假如我们要将Man所实现的run要替换成Woman,我们并不需要修改很多代码,只需要将IRunhuman1newMan();替换成IRunhuman1newWoman();即可实际项目改造
  那使用多态这种特性,我们就可以创建一个统一的接口,业务代码都使用这个接口的方法,而通过实现该接口的方法,从而可以选择多种不同的实现方式。
  那先创建一个AuthService接口,接口里面包含着我们业务代码所需要的api方法。
  然后创建AuthSatokenServiceImpl实现类,该实现类是使用Satoken来实现接口里面的方法。
  简单调用一下Satoken的Api方法。
  那么接口有了,实现类有了,但是在Springboot项目中,我们将实例化交给了Spring来管理,所以还需要创建一个配置类,来让Spring选择需要实例化的类。
  Ok,那我们直接修改项目中的代码,这里举例一处。
  原先的业务代码。
  想以上红圈内的代码,我们需要获取当前请求的用户是否登录了,假如我们直接使用Satoken的API方法,那么后面需要更换SpringSecurity或者其他一些组件的时候,就需要大面积的修改这些代码。
  改造后:
  先注入实现类AutowiredAuthServiceauthS
  这样子就完成了解耦,假如需要更换其他的授权认证组件,只需要创建一个实现AuthService接口的实现类,然后修改一下配置类的实例即可。
  更改该处即可,即可更换。
搜索 投诉 评论 转载

英伟达有史以来最大的失败Nvidia是有史以来最大和最成功的显卡制造商,尽管AMD尽了最大努力。但仅仅因为Nvidia早早期的辉煌成功,并不意味着这位国王从未动摇过。事实上,就像其最激烈的竞争一样。……AssemblyCode汇编代码Intel格式简单指令总结下面都为Intel格式的汇编,在objdump下可以用Mintel,在gdb下可以setdisassemblyflavorintel来指定movdst,src将src的值……兰州榆中华彩冬梦冰雪花灯嘉年华元旦启幕本网记者宋芳科2023年榆中栖云小镇华彩冬梦冰雪花灯嘉年华将在元旦期间正式开启。冰雪乐园、彩色花灯、民俗表演、恐龙世界、美食天下、烟花表演等6大主题近50项娱乐项目火热来……今天幸运拍到了中华秋沙鸭,这里的栖息地云雾缭饶,太美了感觉像个天然的大氧吧,云雾缥缈,很有人间仙境的感觉。在林间小道散步的感觉太美了,好惬意,是个休闲散步好去处。无意中在传奇小镇周围溜达发现的地方,这里不仅有国家一级保……内地男星女儿的颜值变化,汪峰大女儿越来越美,张艺谋女儿大宽脸娱乐圈不乏高颜值的明星夫妻,不过基因遗传真的是一门玄学,比如内地男星中,有人的女儿长得很像自己,有人长相一般,但女儿长得非常好看。第一位,汪峰大女儿汪曼熙近日,汪峰……要命!杜兰特膝盖受伤!哈登缔造历史第一记录主场虫、客场龙,说的就是布鲁克林篮网然而现在布鲁克林的风水不仅仅影响状态甚至开始威胁起球员的身体健康,贼吓人虽说前来挑战的鹈鹕是联盟倒数的弱旅毕竟对面带……这款全自动咖啡机,支持13档研磨度调整,满足挑剔的味蕾每天一杯咖啡已经成为很多人的习惯。而且小编也经常能在评论中见到选购咖啡机的相关问题。对于大多数家庭用户和咖啡爱好者来说,简单方便的全自动咖啡机是非常不错的选择。今天要向大家介绍……没有大碍!记者凯恩参加了英格兰的完整训练直播吧11月24日讯英格兰足球记者协会首席足球写手JohnCross报道,凯恩今天参加了英格兰的完整训练。在首回合小组赛62击败伊朗的比赛中,凯恩表现出色,但出现了伤病情……Java使用多态给项目解耦原文链接:https:www。cnblogs。comAlickxp16368364。htmlJavaSpringBoot使用多态给项目解耦提及今天在打算维护一下智慧社区这……斗罗七怪第4考奖励曝光,唐三翻倍荣荣减半,挂三待遇好连升4级唐三就是唐三,无论走到哪里都一路开挂。这次猎杀邪魔虎鲸王也是如此,要知道,唐三在后面一个人单挑邪魔虎鲸王。仅仅只有80级的他竟然硬生生接下了邪魔虎鲸王拼死的一击。这不是开挂是什……幼儿园异国小孩见面,面面相觑,童真真可爱福建的一家幼儿园来了,异国他乡的小朋友,引得同龄校友一番抚摸和羡慕。你的皮肤真黑,怎么样才能变成这么黑这么健壮?爸爸或妈妈染的。回去我也让妈妈染一个。着实很逗……当代散文我爱秋天文刘凛秋天,我爱你的凉爽,爱你的金黄,和累累的甜香。今年的夏天太长,把人们热得够呛,迟迟不肯离去,有点黯然神伤。盼着秋天到来,她来了,走了40余日,没有奏出炎热,或……
草莓寄生线虫防治技术怎样把元的产品卖出元的感觉WE首胜要来了?Ale又成替补,LNG派出PandaC王珠珠数字化转型支持教育高质量发展鬼谷子情商极高之人与人交往不会说这三怎么防范公共热点的安全隐患百褶裙搭配图片高个矮个时髦丽人看过来是你给我力量每逢佳节胖三斤?一起来给身体去去油!温暖的瞬间交易所稳定币持有量Tether会因为Binance青睐Tru身体虚出大汗是怎么回事
职场男人言语不要太直接无锡有哪些公司(无锡500强企业)论媒介经营管理对企业文化品牌建设的重要性实现企业文化的差异性何谓企业文化绽放魅力周迅又一次惊艳到大家!穿美式复古风跳舞风情万种,电影脸太绝了玩家在魔兽世界10。0发现绝美场景,神似WindowsXP的电视剧扶摇武术特辑燃动出击刚柔兼具而明心见性AwfulState南怀瑾语录(南怀瑾先生经典的22句话)芦荟胶买百分之99的好还是92买芦荟胶应该怎么选择你好呀,12月,每一个清晨,记得鼓励自己好事会发生画家歪曲丑化袁隆平?网友举报

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州