91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Java適配器模式

發布時間:2020-09-26 12:13:44 來源:腳本之家 閱讀:145 作者:鍵盤上的麒麟臂 欄目:編程語言

假期剛結束不久,也沒什么好寫的,今天就水下文章,講講設計模式對開發時的影響,做開發到現在,感覺設計模式對開發的影響還是挺大的。

這次就簡單談談適配器模式。可能適配器模式感覺比較雞肋,但是用到的地方還挺多的,特別是合作開發的時候。

1.適配器模式

適配器模式,作為連接兩個接口的橋梁。這個概念感覺有點那啥,很少用接口的朋友可能就沒有什么感覺,經常面向接口編程的朋友比較能產生共鳴,簡單來說,就是寫一個適配器(轉換器)來對接對象。

2.適配器模式使用

java適配器模式有兩種,類適配器和對象適配器

(1)類適配器demo

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

先寫接口B

public interface MP4{
 void play();
}

接口B的實現類

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

接口A

public interface Player{
  void action();
}

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

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

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

(2)對象適配器demo

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

這時候我們使用對象適配器的話可以這樣寫。

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

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

}

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

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

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

}

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

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

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

}

可能這樣看起來會比較好一點吧,比較容易看出如何適配兩個接口。

3.適配器模式的使用場景

(1)其中一個使用的場景是像上面所說的一樣,有兩個接口,你主動的想去連接著兩個接口,寫個適配器,感覺這種情況也不是很多,因為很多時候都是些一個實體類對象調用另一個實體類對象。

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

以上所述是小編給大家介紹的Java適配器模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丁青县| 探索| 磐石市| 清远市| 象州县| 内江市| 岐山县| 十堰市| 三江| 安宁市| 濮阳市| 清水河县| 大关县| 潮州市| 宜兰县| 新野县| 云南省| 沾益县| 海城市| 平南县| 宁强县| 青海省| 寻乌县| 南乐县| 平顺县| 天气| 新蔡县| 潍坊市| 新津县| 渭源县| 桑植县| 丹棱县| 永春县| 治多县| 鄄城县| 阿克陶县| 临沧市| 台北市| 日照市| 永州市| 石泉县|