介面卡模式(Adapter)

2021-08-02 04:18:45 字數 2045 閱讀 4657

介面卡模式將某個類的介面轉換成客戶端期望的另乙個介面表示,目的是消除由於介面不匹配所造成的類的相容性問題。主要分為三類:類的介面卡模式、物件的介面卡模式、介面的介面卡模式。首先,我們來看看

類的介面卡模式

核心思想就是:有乙個source類,擁有乙個方法,待適配,目標介面時targetable,通過adapter類,將source的功能擴充套件到targetable裡,看**:

public class source   

}

public inte***ce targetable
public class adapter extends source implements targetable   

}

adapter類繼承source類,實現targetable介面,下面是測試類:

public class adaptertest   

}

輸出:this is original method!

this is the targetable method!

這樣targetable介面的實現類就具有了source類的功能

物件的介面卡模式

基本思路和類的介面卡模式相同,只是將adapter類作修改,這次不繼承source類,而是持有source類的例項,以達到解決相容性的問題。

只需要修改adapter類的原始碼即可:

private source source;

super();

this.source = source;

} @override

public void method2()

@override

public void method1()

}

public class adaptertest   

}

介面的介面卡模式

,介面的介面卡是這樣的:有時我們寫的乙個介面中有多個抽象方法,當我們寫該介面的實現類時,必須實現該介面的所有方法,這明顯有時比較浪費,因為並不是所有的方法都是我們需要的,有時只需要某一些,此處為了解決這個問題,我們引入了介面的介面卡模式,借助於乙個抽象類,該抽象類實現了該介面,實現了所有的方法,而我們不和原始的介面打交道,只和該抽象類取得聯絡,所以我們寫乙個類,繼承該抽象類,重寫我們需要的方法就行

這個很好理解,在實際開發中,我們也常會遇到這種介面中定義了太多的方法,以致於有時我們在一些實現類中並不是都需要。看**:

public inte***ce sourceable
public void method1(){}

public void method2(){}

} public void method1()

} public void method2() }

public static void main(string args)

}測試輸出:

the sourceable inte***ce's first sub1!

the sourceable inte***ce's second sub2!

達到了我們的效果!

講了這麼多,總結一下三種介面卡模式的應用場景:

類的介面卡模式:當希望將乙個類轉換成滿足另乙個新介面的類時,可以使用類的介面卡模式,建立乙個新類,繼承原有的類,實現新的介面即可。

介面卡模式 Adapter

一句話 什麼是adapter adapter 就是乙個轉換器,比如乙個電源插頭可以讓乙個兩插頭的電器使用牆壁上的三插頭電源。這次的介紹將不寫 雖然設計模式是為了 而生,但我認為這是一種看世界的方法,不僅僅是一種 的設計方式,所以這次的介面卡模式因為比較簡單和容易理解就不再寫 解釋,但介面卡的思想能用...

Adapter 介面卡模式

1.概念 介面卡模式 adapter pattern gof95 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。2.兩種形式 a.類的介面卡模式 b.物件的介面卡模式 3.模擬問題 現在假設我們的程式已經設計了介面request介面,但是...

Adapter介面卡模式

adapter介面卡模式是一種結構型模式,主要應對 由於應用環境的變化,常常需要將 一些現存的物件 放在新的環境中應用,但是,新環境要求的介面是現存物件所不滿足的。設計模式 中說道 將乙個類的介面轉換成客戶希望的另乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的類可以一起工作。在實...