用例子來弄懂Adapter

weixin_34253539發表於2018-01-09

介面卡模式原理

極客學院視訊網址 http://www.jikexueyuan.com/course/1335_4.html?ss=1

理解

1.插頭與插座

每個國家的插頭適配對應的插座,但是每個國家的插頭都不同,我們去旅行的時候需要充電,搜一我們需要一個轉換器,一面能插入外國的插座,一面能為我國插頭提供叉口

2.點菸器轉為USB介面,用於手機充電

原理

1.用火雞冒充鴨子

對外界人看來是一隻鴨子,繼承自duck介面,對外形象是一隻鴨子的實現。但是是呼叫了火雞的方法和內容,功能和作用都是火雞的。

我們想讓一隻鴨子 展現出 火雞的特徵

對外形象是一隻鴨子,但是有火雞的叫聲,飛行距離

這是物件介面卡方法

1.Duck.java

  • 定義方法

2.GreenDuck.java

  • implement Dack 實現方法

3.Turkey.java

  • 定義方法

4.WildTurkey.java

  • implement Turkey 實現方法

5.TurkeyAdapter.java

  • 對外展現為鴨子形象,所以實現的是 鴨子的介面
  • 對外展現為火雞的功能,所以傳入 火雞的物件

6.MainTest.java(測試)

7.執行呈現

意義

1.將一個類的介面轉換為另一種介面,讓原本介面不相容的類可以相容

2.使用者看不到被適配者,看不到介面卡之後的東西,解藕

3.使用者呼叫介面卡轉化出來的目標介面方法(直接將國標插頭插入介面卡中進行使用,無需知道轉換器後面是哪一個國家的插口)

4.介面卡再呼叫被適配者的相關介面和方法

物件介面卡與類介面卡

多重繼承

繼承 目標介面部分 達到適配目的(使對外呈現鴨子的形象)

繼承 被適配者類的部分 通過呼叫 被適配者類裡面的方法來實現介面的功能(使鴨子具有火雞的功能)

物件是介面卡 --組合方法

上面的火雞例子

類介面卡--繼承方法

通過多重繼承 目標介面 和 被適配的類方法 來實現適配

因為類介面卡 既 extend 又 implement ,所以在main 裡面與 物件介面卡的寫法有所不同

(只飛了3次)

從列舉器到迭代器的適配

相關文章