免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      Java使用多態(tài)給項目解耦

      Java使用多態(tài)給項目解耦

      原文鏈接:https://www.cnblogs.com/Alickx/p/16368364.html

      Java-SpringBoot-使用多態(tài)給項目解耦

      提及

      今天在打算維護(hù)一下智慧社區(qū)這個項目的時候,想到項目是使用Satoken這個開箱即用的授權(quán)和認(rèn)證的組件,因為在項目開啟的時候?qū)pringSecurity并不熟悉,而Satoken類似傻瓜式的,導(dǎo)入依賴進(jìn)去,配置一下獲取權(quán)限和角色的方法即可使用。

      但是由此帶來的問題就是,項目中充斥著Satoken的API方法,類似于StpUtil.isLogin(),StpUtil.getLoginIdAsLong()這類方法在Service層中已經(jīng)是相當(dāng)常見了,盡管是非常的方便,但是帶來的問題就是假如后面我要替換另外一款權(quán)限認(rèn)證和授權(quán)的組件,那么這些API方法通通都需要進(jìn)行修改,這種強耦合很明顯是不合理的。

      我突然想到在SpringSecurity中,配置密碼加密方法的時候,我們可以選擇任意的密碼加密方法。

      @Beanpublic PasswordEncoder getPasswordEncoder() { return new BCryptPasswordEncoder();}

      那么,我能不能也像這樣子,提供一個統(tǒng)一的接口,通過選擇實現(xiàn)方式的不同,從而達(dá)到當(dāng)需要更換別的實現(xiàn)方式的時候,只需要更改該處代碼即可。

      多態(tài)

      其實這需要利用到Java的三大特性之一,多態(tài)。Java的三大特性分別是封裝,繼承和多態(tài)。

      這里使用一個小例子來演示一下什么是多態(tài)。

      我們先創(chuàng)建一個接口,這個接口只需要含有我們統(tǒng)一所需的方法。

      /** * @Author: Alickx * @Date: 2022/06/12/16:22 * @Description: 統(tǒng)一接口 */public interface IRun { /** * 跑步 */ void run();}

      然后我們需要來創(chuàng)建幾個實現(xiàn)該接口的實現(xiàn)類

      分別是Man.java和Woman.java

      /** * @Author: Alickx * @Date: 2022/06/12/16:27 * @Description: 男人的實現(xiàn)類 */public class Man implements IRun{ @Override public void run() { System.out.println(“我是Man,我在run”); }} /** * @Author: Alickx * @Date: 2022/06/12/16:27 * @Description: 女人的實現(xiàn)類 */public class Woman implements IRun{ @Override public void run() { System.out.println(“我是Woman,我在run”); }}

      接著上面的提及,我們把Man和Woman想成是不同密碼加密方式,而run方法則是他們都需要實現(xiàn)的密碼加密方法。

      那我們試著讓這幾個類型實例化。

      /** * @Author: Alickx * @Date: 2022/06/12/9:13 * @Description: main方法 */public class Demo8 { public static void main(String[] args) { // 使用man來實例化 IRun human1 = new Man(); human1.run(); // 使用woman來實例化 IRun human2 = new Woman(); human2.run(); }}

      這里可以看出假如我們要將Man所實現(xiàn)的run要替換成Woman,我們并不需要修改很多代碼,只需要將IRun human1 = new Man(); 替換成IRun human1 = new Woman(); 即可

      實際項目改造

      那使用多態(tài)這種特性,我們就可以創(chuàng)建一個統(tǒng)一的接口,業(yè)務(wù)代碼都使用這個接口的方法,而通過實現(xiàn)該接口的方法,從而可以選擇多種不同的實現(xiàn)方式。

      那先創(chuàng)建一個AuthService接口,接口里面包含著我們業(yè)務(wù)代碼所需要的api方法。

      然后創(chuàng)建AuthSatokenServiceImpl 實現(xiàn)類,該實現(xiàn)類是使用Satoken來實現(xiàn)接口里面的方法。

      簡單調(diào)用一下Satoken的Api方法。

      那么接口有了,實現(xiàn)類有了,但是在Springboot項目中,我們將實例化交給了Spring來管理,所以還需要創(chuàng)建一個配置類,來讓Spring選擇需要實例化的類。

      Ok,那我們直接修改項目中的代碼,這里舉例一處。

      原先的業(yè)務(wù)代碼。

      想以上紅圈內(nèi)的代碼,我們需要獲取當(dāng)前請求的用戶是否登錄了,假如我們直接使用Satoken的API方法,那么后面需要更換SpringSecurity或者其他一些組件的時候,就需要大面積的修改這些代碼。

      改造后:

      先注入實現(xiàn)類

      @AutowiredAuthService authService;

      這樣子就完成了解耦,假如需要更換其他的授權(quán)認(rèn)證組件,只需要創(chuàng)建一個實現(xiàn)AuthService接口的實現(xiàn)類,然后修改一下配置類的實例即可。

      更改該處即可,即可更換。

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年6月14日 12:23
      下一篇 2022年6月14日 12:23

      相關(guān)推薦

      • 分享4條發(fā)微商朋友圈的方法(微商朋友圈應(yīng)該怎么發(fā))

        對于微商朋友來說,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底該怎么發(fā)呢? 為什么同樣是經(jīng)營一個朋友圈,有的微商看起來逼格滿滿,實際效果也不錯;而有的卻動都不動就被屏蔽甚至拉黑…

        2022年11月27日
      • 30個無加盟費的項目(茶顏悅色奶茶店加盟費多少)

        茶顏悅色又爆了,8月18日,茶顏悅色南京門店正式開業(yè),開張不到半小時,門店就人滿為患,消費者的購買熱情十分高漲,而由于人流量過大造成擁堵,茶顏悅色也不得不暫停營業(yè)。 當(dāng)然,這里面排…

        2022年11月27日
      • 凈利潤率越高越好嗎(凈利潤率多少合適)

        一、持續(xù)增收不增利,平均凈利潤率首次跌入個位數(shù) 2021年,增收不增利依舊是行業(yè)主流。具體來看,大部分企業(yè)營業(yè)收入呈增長態(tài)勢,E50企業(yè)平均同比增速達(dá)到17.3%,但是利潤增速則明…

        2022年11月26日
      • 《寶可夢朱紫》獒教父屬性是什么?獒教父屬性一覽

        寶可夢朱紫里獒教父是一只很強的寶可夢,很多玩家不清楚獒教父的屬性是什么樣的,下面就給大家?guī)韺毧蓧糁熳祥峤谈笇傩砸挥[,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 獒教父屬性一覽…

        2022年11月25日
      • 《寶可夢朱紫》夢特性怎么獲得?隱藏特性獲取方法推薦

        寶可夢朱紫里有很多寶可夢都是擁有夢特性會變強的寶可夢,很多玩家不知道夢特性怎么獲得,下面就給大家?guī)韺毧蓧糁熳想[藏特性獲取方法推薦,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 …

        2022年11月25日
      • 《寶可夢朱紫》奇魯莉安怎么進(jìn)化?奇魯莉安進(jìn)化方法分享

        寶可夢朱紫中的奇魯莉安要怎么進(jìn)化呢?很多玩家都不知道,下面就給大家?guī)韺毧蓧糁熳掀骠斃虬策M(jìn)化方法分享,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 奇魯莉安進(jìn)化方法分享 奇魯莉安…

        2022年11月25日
      • 規(guī)范透明促PPP高質(zhì)量發(fā)展——16萬億元大市場迎來新規(guī)

        近日,財政部印發(fā)《關(guān)于進(jìn)一步推動政府和社會資本合作(PPP)規(guī)范發(fā)展、陽光運行的通知》,從做好項目前期論證、推動項目規(guī)范運作、嚴(yán)防隱性債務(wù)風(fēng)險、保障項目陽光運行四個方面進(jìn)一步規(guī)范P…

        2022年11月25日
      • 推薦3種白手起家的賺錢項目(白手起家賺錢項目有哪些)

        如今社會壓力非常的大,家有老少要養(yǎng)活,這些都加速了窮人想要創(chuàng)業(yè)的欲望,但是創(chuàng)業(yè)路總是那么的艱難,資金就是創(chuàng)業(yè)的重頭戲,所以選擇一個低成本又賺錢的項目是大多數(shù)人最期望的了,那么有哪些…

        2022年11月25日
      • 2022全球最常用密碼名單:password成全球最常用密碼

        11月24日消息,據(jù)IT之家報道,密碼管理工具NordPass現(xiàn)已發(fā)布2022年全球最常用的密碼名單,結(jié)果顯示用戶仍在使用眾所周知的弱密碼。統(tǒng)計數(shù)據(jù)顯示,今年全球最常見的密碼是“p…

        2022年11月25日
      • 英皇文化產(chǎn)業(yè):結(jié)束全部7間英皇UA電影城經(jīng)營

        11月21日,英皇文化產(chǎn)業(yè)發(fā)布公告,英皇娛藝影院(廣東)有限公司(“中國附屬公司”)為英皇UA的全資附屬營運公司。 董事會謹(jǐn)此知會公司股東,于2022年11月21日,英皇UA(作為…

        2022年11月24日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時間:周一至周五,10:30-18:30,節(jié)假日休息