最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java適配器模式

 更新時(shí)間:2019年03月21日 16:44:39   作者:鍵盤上的麒麟臂  
這篇文章主要介紹了Java適配器模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

假期剛結(jié)束不久,也沒什么好寫的,今天就水下文章,講講設(shè)計(jì)模式對(duì)開發(fā)時(shí)的影響,做開發(fā)到現(xiàn)在,感覺設(shè)計(jì)模式對(duì)開發(fā)的影響還是挺大的。

這次就簡(jiǎn)單談?wù)勥m配器模式??赡苓m配器模式感覺比較雞肋,但是用到的地方還挺多的,特別是合作開發(fā)的時(shí)候。

1.適配器模式

適配器模式,作為連接兩個(gè)接口的橋梁。這個(gè)概念感覺有點(diǎn)那啥,很少用接口的朋友可能就沒有什么感覺,經(jīng)常面向接口編程的朋友比較能產(chǎn)生共鳴,簡(jiǎn)單來(lái)說(shuō),就是寫一個(gè)適配器(轉(zhuǎn)換器)來(lái)對(duì)接對(duì)象。

2.適配器模式使用

java適配器模式有兩種,類適配器和對(duì)象適配器

(1)類適配器demo

類適配器主要是使用繼承的方式連接兩個(gè)接口。我們假設(shè)對(duì)接接口A和接口B。

先寫接口B

public interface MP4{
 void play();
}

接口B的實(shí)現(xiàn)類

public class ExpensiveMP4 implement MP4{
 public void play(){
   // todo
 }
}

接口A

public interface Player{
  void action();
}

假如你的工程中有這幾個(gè)類,然后你發(fā)現(xiàn),action()方法中要寫的操作,就是ExpensiveMP4的play()中的操作“//todo”,所以你沒必要重復(fù)再寫一次,想個(gè)辦法讓他們適配。所以,你想讓外部調(diào)用Player的時(shí)候去調(diào)用ExpensiveMP4的play,如果用類適配器的話可以這樣寫

public class ExpensiveAdapter extends ExpensiveMP4 implement Player{
 public void action(){
  play();
 }
}

這樣就把兩個(gè)接口連接起來(lái)了,不過(guò)我一般用不上類適配器,感覺這樣的做法不太靈活,而且在java中,盡量少用繼承,多用組合。而且這種寫法我覺得也不太舒服。

(2)對(duì)象適配器demo

上面的類適配器用的是“繼承”的方式去連接,這里的對(duì)象適配器用的是“組合”的方式。我們假設(shè)對(duì)接接口A和接口B。就用上面的MP4接口,Player接口和ExpensiveMP4類吧。

這時(shí)候我們使用對(duì)象適配器的話可以這樣寫。

public class PlayerAdapter implement Player{
 public ExpensiveMP4 expensiveMP4;
 
 public PlayerAdapter (){
  this.expensiveMP4 = new ExpensiveMP4();
 }  

 public void action(){
  if(expensiveMP4 != null){
    expensiveMP4 .play();
  }
 }

}

感覺這樣好像不太靈活,expensiveMP4像死的一樣,毫無(wú)靈魂,好吧,我們改改。

public class PlayerAdapter implement Player{
 public ExpensiveMP4 expensiveMP4;
 
 public PlayerAdapter (ExpensiveMP4 expensiveMP4){
  this.expensiveMP4 = expensiveMP4;
 }  

 public void action(){
  if(expensiveMP4 != null){
    expensiveMP4 .play();
  }
 }

}

這樣就比剛才好多了,比剛才的代碼靈活多了,但是總感覺有點(diǎn)普通,我們要把代碼寫得有點(diǎn)藝術(shù),抽象就是藝術(shù),好吧,再改改。

public class PlayerAdapter implement Player{
 public MP4 mp4;
 
 public PlayerAdapter (MP4 mp4){
  this.mp4 = mp4;
 }  

 public void action(){
  if(mp4!= null){
    mp4.play();
  }
 }

}

可能這樣看起來(lái)會(huì)比較好一點(diǎn)吧,比較容易看出如何適配兩個(gè)接口。

3.適配器模式的使用場(chǎng)景

(1)其中一個(gè)使用的場(chǎng)景是像上面所說(shuō)的一樣,有兩個(gè)接口,你主動(dòng)的想去連接著兩個(gè)接口,寫個(gè)適配器,感覺這種情況也不是很多,因?yàn)楹芏鄷r(shí)候都是些一個(gè)實(shí)體類對(duì)象調(diào)用另一個(gè)實(shí)體類對(duì)象。

(2)被動(dòng)使用的情況,這種情況我可能見得比較多。舉個(gè)栗子,比較極端的栗子,你和你同伴一起合作開發(fā),你同伴寫一個(gè)部分,你寫一個(gè)部分,現(xiàn)在兩個(gè)部分要對(duì)接。結(jié)過(guò)到對(duì)接時(shí),你們發(fā)現(xiàn)兩個(gè)人都自定義了接口,而且兩個(gè)人都開發(fā)完了,都不想改,那怎么辦,只能寫一個(gè)適配器去適配兩個(gè)接口。又或者說(shuō)你開發(fā)新版本的時(shí)候重新定義了接口,要和舊版本寫適配的時(shí)候,為了方便也可以使用適配器模式。

以上所述是小編給大家介紹的Java適配器模式詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java Jmeter全局變量設(shè)置過(guò)程圖解

    Java Jmeter全局變量設(shè)置過(guò)程圖解

    這篇文章主要介紹了Java Jmeter全局變量設(shè)置過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 一文詳解Java中Stream流的使用

    一文詳解Java中Stream流的使用

    JDK8新增了Stream(流操作)處理集合的數(shù)據(jù),可執(zhí)行查找、過(guò)濾和映射數(shù)據(jù)等操作.本文將通過(guò)一些實(shí)例介紹stream流的使用,需要的可以參考一下
    2022-05-05
  • 詳解Java中接口的定義與實(shí)例代碼

    詳解Java中接口的定義與實(shí)例代碼

    這篇文章主要介紹了詳解Java中接口的定義與實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 舉例講解Java中do-while語(yǔ)句的使用方法

    舉例講解Java中do-while語(yǔ)句的使用方法

    這篇文章主要介紹了Java中do-while語(yǔ)句的使用方法例子,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • 徹底了解java中ReentrantLock和AQS的源碼

    徹底了解java中ReentrantLock和AQS的源碼

    這篇文章主要介紹了徹底了解java中ReentrantLock和AQS的源碼,想了解鎖機(jī)制的同學(xué),一定要參考下
    2021-04-04
  • Java/Web調(diào)用Hadoop進(jìn)行MapReduce示例代碼

    Java/Web調(diào)用Hadoop進(jìn)行MapReduce示例代碼

    本篇文章主要介紹了Java/Web調(diào)用Hadoop進(jìn)行MapReduce示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • spring boot 使用profile來(lái)分區(qū)配置的操作

    spring boot 使用profile來(lái)分區(qū)配置的操作

    這篇文章主要介紹了spring boot使用profile來(lái)分區(qū)配置的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring?Retry?實(shí)現(xiàn)樂觀鎖重試實(shí)踐記錄

    Spring?Retry?實(shí)現(xiàn)樂觀鎖重試實(shí)踐記錄

    本文介紹了在秒殺商品SKU表中使用樂觀鎖和MybatisPlus配置樂觀鎖的方法,并分析了測(cè)試環(huán)境和生產(chǎn)環(huán)境的隔離級(jí)別對(duì)樂觀鎖的影響,通過(guò)簡(jiǎn)單驗(yàn)證,展示了在可重復(fù)讀和讀已提交隔離級(jí)別下的不同行為,感興趣的朋友一起看看吧
    2025-03-03
  • 在js與java中判斷json數(shù)據(jù)中是否含有某字段的案例

    在js與java中判斷json數(shù)據(jù)中是否含有某字段的案例

    這篇文章主要介紹了在js與java中判斷json數(shù)據(jù)中是否含有某字段的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 基于Java實(shí)現(xiàn)ssh命令登錄主機(jī)執(zhí)行shell命令過(guò)程解析

    基于Java實(shí)現(xiàn)ssh命令登錄主機(jī)執(zhí)行shell命令過(guò)程解析

    這篇文章主要介紹了基于Java實(shí)現(xiàn)ssh命令登錄主機(jī)執(zhí)行shell命令過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論

常山县| 永定县| 桦川县| 思茅市| 内丘县| 平塘县| 大埔县| 奉贤区| 科尔| 镇巴县| 临沧市| 桐柏县| 霍山县| 紫云| 安宁市| 昆山市| 云龙县| 上蔡县| 遵化市| 苍梧县| 涿鹿县| 壤塘县| 荣成市| 金塔县| 松阳县| 太白县| 白城市| 彭山县| 台中市| 云阳县| 沙湾县| 诸城市| 汶川县| 洛南县| 高平市| 德保县| 谢通门县| 金溪县| 贺州市| 福泉市| 江孜县|