介面卡模式原理
極客學院視訊網址 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次)