介面卡模式(adapter)就是把乙個類的介面轉換成客戶端所期待的另一種介面。從而使原本兩個因為不匹配的類無法在一起工作變成能在一起工作。舉個栗子來說,現在的家用電器一般都要求使用220v的電壓工作,遇到個別要求使用110v電壓的電器時,我們就需要乙個變壓器,這個變壓器就可以理解成為這裡的介面卡。
那麼,哪些場景下我們需要使用介面卡模式呢?
1、系統使用類的介面不符合系統要求。
2、要建立乙個重複使用的類,用於與該類關聯不大的類,包括工作中引進的類。
3、類的介面卡模式有點像類的多繼承模式,利用介面的特性,把一些零散的類組織在一起,成為乙個新的類來實現呼叫,並且看起來像是對乙個類的操作。實際上,介面卡模式更強調的是對類的組織,而不是功能的實現。
介面卡模式的作用:
介面卡模式可以方便的組織**組織與模型的準確表示,可以把乙個類的成員插到另乙個類的子類中去,從而讓這個繼承的子類看起來像乙個新類,同時可以對父類減少依賴,下面來看個簡單的例子,看看介面卡模式是怎麼把220v電壓轉換成110v電壓的。
一、類介面卡模式
原理:通過繼承來實現介面卡功能。
1.定義乙個輸出110v電壓的介面
/**
* 輸出110v電壓
* */
public
inte***ce
iv110
2.實現110v電壓輸出
public
class
v110impl
implements
iv110
}
3.定義乙個220v電壓輸出介面
/**
* 輸出220v電壓
*@author administrator
* */
public
inte***ce
iv220
4.定義乙個介面卡,用來做變壓器功能。
/**
* 我是變壓器,將220v電壓變換成110v電壓
* */
public
class
vadapter
extends
v110impl
implements
iv220
}
5.測試我們的變壓器
public
class testadapter
}
6.測試結果:
我輸出110v電壓。
通過變壓器轉換後,已經將電壓從220v轉換成了110v。這個就是類介面卡模式了。
二、物件介面卡模式
原理:通過組合來實現介面卡模式
當我們想訪問的介面a沒有我們想要的方法,在另外乙個介面b中卻有我們需要的方法,在這種場景下,我們可以通過組合的方式來建立乙個介面卡。
1.定義乙個輸出110v電壓的介面
/**
* 輸出110v電壓
* */
public
inte***ce
iv110
2.定義乙個220v電壓輸出介面
/**
* 輸出220v電壓
*@author administrator
* */
public
inte***ce
iv220
3.實現110v電壓輸出
public
class
v110impl
implements
iv110
}
4.定義介面卡
public
class
vadapter
implements
iv220
public
void
isv220()
}
5.定義測試類
public
class testadapter
}
6.測試結果
我輸出110v電壓。
這裡介面卡通過將110v電壓輸出物件iv110組合進來實現介面卡模式。
三、介面介面卡模式
原理:通過抽象類來實現適配 ,這種適配稍別於上面兩種模式。
當存在這樣乙個介面 ,裡面定義了n個方法,但我們只想使用裡面的乙個或者部分方法的時候,如果我們實現介面,我們需要實現該介面的所有方法。哪怕我們對不使用的方法置空,也會有一大堆大括號,使得該實現類臃腫而不優雅。這個時候我們可以使用乙個抽象類作為中介軟體,充當介面卡的角色,用這個抽象類去實現介面,而在抽象類中的所有方法都置空,再建立抽象類的繼承類,而我們重寫我們需要使用的幾個方法即可。
下面來演示乙個簡單的例子就比較明白了:
public
inte***ce a
定義我們的介面卡:
public
class
adapter
implements
a public
void
b(){}
public
void
c(){}
public
void
d(){}
public
void
e(){}
public
void
f(){}
}
覆蓋介面卡的方法:
pulic class
client
extends
adapter
public
void b()
}
測試我們的類:
public class testadapter
}
JAVA設計模式 介面卡模式
介面卡模式 要點 1 介面卡模式主要應用於 希望復用一些現存的類,但是介面又與復用環境要求不一致的情況 在遺留 復用 類庫遷移等方面非常有用。2 介面卡模式有物件介面卡和類介面卡兩種形式的實現結構,但是類介面卡採用 多繼承 的實現方式,帶來了不良的高耦合,所以一般不推薦使用。物件介面卡採用 物件組合...
java設計模式 介面卡模式
介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。用電器做例子,膝上型電腦的插頭一般都是三相的,即除了陽極 陰極外,還有乙個地極。而有些地方的電源插座卻只有兩極,沒有地極。電源插座與膝上型電腦的電源插頭不匹配使得膝上型電腦無法使用。...
Java設計模式 介面卡模式
目錄 介面卡模式的個人理解 轉換方法 介面卡模式的定義 通用類圖 角色定義 target目標角色 adaptee源角色 adapter介面卡角色 通用源 介面卡模式的優點 首先有乙個目標角色 乙個源角色還有乙個介面卡角色。我們要做的就是利用介面卡角色將源角色轉換為目標角色。而目標角色是乙個正在良好執...