介面卡模式(Adapter)
介面卡模式:
將一個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。經常舉的例子是插頭,插座是2口的,但電器插頭是3口的,若想正常使用電器就需要轉換插頭(3口轉2口),這個轉換插頭就是介面卡。
介面卡適用範圍:
系統需要使用現有的類,而此類的藉口不符合系統的要求
想要建立一個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。
介面卡模式有兩種實現方式:物件介面卡和類介面卡。區別在於類介面卡用繼承的方式使用原類(介面),而物件介面卡採用委託的方式使用源。
- 物件介面卡:
客戶需要使用三插頭電器(客戶),可是插座只是二插頭的(原有系統),故採用三插頭轉二插頭介面卡,目標是使得三插頭電器能夠使用二插頭插座的功能(功能在函式operateA(),operateB()中)。物件介面卡採用委託方式,首先在“二插頭轉三插頭類”中(實現三插頭介面),定義二插頭介面變數(委託物件),以便將實現二插頭物件的引用傳給它,來回撥原有系統中的方法(operateA(),operateB()).
//原有系統中的二插頭介面
public interface 二插頭{
void operateA();
void operateB();
}
//實現原有系統中介面的而二插頭類
public class 實現介面的二插頭類 implements 二插頭{
public void operateA(){}//重寫介面方法時,必須加上public。因為介面方法預設型別public abstract
pubic void operateB(){}
}
//客戶要求的三插頭介面
public interface 三插頭{
public void operateC();
pubic void operateD();
}
//物件介面卡,將三插頭轉換而二插頭,本身是一個實現客戶要求的三插頭的類
public class 二插頭轉三插頭類 implements 三插頭{
二插頭 adpte;//定義原系統中的介面變數(定義委託物件)
public 二插頭轉三插頭類(二插頭 adpte1){//介面做引數,準備介面回撥:把實現二插頭介面的類建立的物件的引用傳遞給該介面宣告的介面變數引數,那麼該介面變數就可以呼叫被類實現的介面中的方法。
this.adpte=adpte1;
}
public void operateC(){
//可回撥實現介面的二插頭類中的方法
}
public void operateD(){
//可回撥實現介面的二插頭類中的方法
}
}
public class 客戶類{
public static void main(String[]args){
二插頭 adpte;
adpte=new 二插頭轉三插頭類(new 實現介面的二插頭類());//存放物件的引用
adpte.operateA();
adpte.operateB();
}
}
類介面卡
和物件介面卡不同,類介面卡器通過繼承原有系統的類,這樣便可任意訪問原有系統中的方法。
相關文章
- Adapter-介面卡模式APT模式
- 介面卡模式(adapter pattern)模式APT
- PHP設計模式-Adapter 介面卡模式PHP設計模式APT
- Adapter 介面卡模式(設計模式03)APT設計模式
- 設計模式之介面卡模式(adapter pattern)設計模式APT
- 《設計模式》 - 5. 介面卡模式( Adapter )設計模式APT
- 設計模式筆記:介面卡模式(Adapter)設計模式筆記APT
- Scala 與設計模式(五):Adapter 介面卡模式設計模式APT
- 人人都會設計模式:介面卡模式--Adapter設計模式APT
- C#設計模式-介面卡模式(Adapter Pattern)C#設計模式APT
- 設計模式——6介面卡模式(Adapter)設計模式APT
- 人人都會設計模式---介面卡模式--Adapter設計模式APT
- 設計模式--介面卡模式Adapter(結構型)設計模式APT
- 12/24 設計模式之介面卡模式 Adapter Pattern設計模式APT
- 設計模式的征途—7.介面卡(Adapter)模式設計模式APT
- C#設計模式(7)——介面卡模式(Adapter Pattern)C#設計模式APT
- 人人都會設計模式:04-介面卡模式–Adapter設計模式APT
- Rust語言之GoF設計模式:介面卡AdapterRustGo設計模式APT
- ES6 實現之介面卡模式 Adapter模式APT
- 一天一個設計模式(五) - 介面卡模式(Adapter)設計模式APT
- 我所理解的設計模式(C++實現)——介面卡模式(Adapter Pattern)設計模式C++APT
- 設計模式系列之介面卡模式(Adapter Pattern)——不相容結構的協調設計模式APT
- 請教各位老師:代理(Proxy)模式和介面卡(Adapter)模式有什麼區別呢?模式APT
- 使用C# (.NET Core) 實現介面卡模式 (Adapter Pattern) 和外觀模式 (Facade Pattern)C#模式APT
- 設計模式---Adapter模式設計模式APT
- 介面卡模式(類介面卡 物件介面卡)模式物件
- Java模式(介面卡模式)Java模式
- 介面卡模式模式
- 介面卡模式(類介面卡,物件介面卡,介面介面卡)模式物件
- (精華)2020年8月28日 二十三種設計模式(六)-介面卡模式(Adapter Pattern)設計模式APT
- Java設計模式之從[滑鼠介面][星際爭霸中的兵種行為]分析介面卡(Adapter)模式Java設計模式APT
- 關於Adapter模式和Decorator模式APT模式
- 設計模式----介面卡模式設計模式
- 設計模式-介面卡模式設計模式
- 設計模式:介面卡模式設計模式
- 門面模式,介面卡模式模式
- 如何實現 axios 的自定義介面卡 adapteriOSAPT
- JS 介面卡模式JS模式