一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java中設計模式之適配器模式

java中設計模式之適配器模式

2021-01-09 13:38愛寶貝丶 Java教程

這篇文章主要介紹了java中設計模式之適配器模式的相關資料,適配器模式將一個類的接口轉換成客戶期望的另一個接口。適配器讓原本不兼容的類可以合作得親密無間,需要的朋友可以參考下

java設計模式適配器模式

 前言:

    適配器模式可以將一個類或接口應用于另一個不同但是卻有聯系的接口,主要的做法是通過聲明一個目標接口的實現類,在該類中聲明一個將被適配類或接口(被適配者)作為參數的構造器和被適配者的實例,這樣在實現目標接口的時候就可以調用被適配者的實例,并且輔以一些額外的操作。適配器模式的主體有三個部分:適配者,適配者實現類和被適配者。具體類結構如下圖:

java中設計模式之適配器模式

      這里將被適配者的對象以組合的方式放到適配器類中,那么被適配者及其實現者都可以使用該適配器。適配器模式的優點在于可以將不同類型但是工作目的相似的對象兼容起來,而缺點在于,如果目標接口較大,那么要進行兼容工作就需要許多額外的代碼。

      這里以一個不太符合實際的例子來對適配器模式進行說明。火雞和鴨子都是可以叫并且飛的,但是火雞和鴨子的叫聲不一樣,并且火雞也沒有鴨子飛得遠。如果想把一只火雞假扮為一只鴨子,就需要將火雞對象進行一些裝扮,這里我們就可以聲明一個裝扮類,該裝扮類也是鴨子類型的一種,當火雞進入該裝扮之后就變成了一只鴨子。具體的類實現如下:

目標接口(鴨子接口):

?
1
2
3
4
public interface Duck {
  void quack();
  void fly();
}

目標接口的正常實現(鴨子實現):

?
1
2
3
4
5
6
7
8
9
10
11
public class MallardDuck implements Duck {
  @Override
  public void quack() {
    System.out.println("Quack");
  }
 
  @Override
  public void fly() {
    System.out.println("I'm flying");
  }
}

被適配者接口(火雞接口):

?
1
2
3
4
public interface Turkey {
  void gobble();
  void fly();
}

被適配者一般實現(火雞類):

?
1
2
3
4
5
6
7
8
9
10
11
public class WildTurkey implements Turkey {
  @Override
  public void gobble() {
    System.out.println("Gobble gobble");
  }
 
  @Override
  public void fly() {
    System.out.println("I'm flying a short distance");
  }
}

適配器:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class TurkeyAdapter implements Duck {
  private Turkey turkey;
 
  public TurkeyAdapter(Turkey turkey) {
    this.turkey = turkey;
  }
 
  @Override
  public void quack() {
    turkey.gobble();
  }
 
  @Override
  public void fly() {
    for (int i = 0; i < 5; i++) {
      turkey.fly();
    }
  }
}

      通過火雞適配器,我們將火雞適配成了一只鴨子。這里需要說明的是,適配器模式與裝飾者模式都是對源對象進行裝飾,而達到一定的效果的,但是適配器模式和裝飾者模式的區別在于,適配器模式是適配源對象,使其能夠符合特定的接口,而裝飾者模式是對源對象的功能的一個擴充,使其能做更多的工作。

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:https://my.oschina.net/zhangxufeng/blog/787160

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜一级影院 | 天天做天天爱天天综合网 | 亚洲国产精品久久精品成人网站 | 国产日本欧美亚洲精品视 | 9lporm自拍视频在线 | 91东航翘臀女神在线播放 | 欧美一级片观看 | 亚洲天堂视频在线播放 | 3d动漫免费 | 色老板在线视频 | 四虎影院网站 | 亚洲日本中文字幕在线2022 | 亚洲va久久久噜噜噜久久狠狠 | 四虎影视库永久在线地址 | 久热在线这里只有精品7 | 美女的隐私无遮挡撒尿 | 久久国产视频网站 | 亚洲第一男人天堂 | 亚洲国产欧美久久香综合 | 日本高清不卡一区久久精品 | 亚洲国产成人久久综合一区77 | 亚洲成综合 | 性派对videos18party | 3x3x3x短视频在线看 | 91精品国产高清久久久久久91 | 成人免费观看www视频 | 美女胸又大又黄又www小说 | 日本人黄色| 国产剧情麻豆刘玥视频 | 欧美成人tv在线观看免费 | 国产一级大片免费看 | 日本免费精品 | 糖心在线观看网 | 久久精品AV一区二区无码 | 天天插在线视频 | 亚洲国产精品综合欧美 | 黑人巨大精品战中国美女 | 欧美人禽杂交av片 | 国内外成人在线视频 | 小早川怜子息梦精在线播放 | 波多洁野衣一二区三区 |