設計模式之介面卡模式

2021-07-15 01:42:33 字數 2451 閱讀 1842

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

首先,我們來看看類的介面卡模式,先看類圖:

核心思想就是:有乙個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類的原始碼即可:

public

class

implements

targetable

@override

public

void

method2()

@override

public

void

method1()

}

測試類:

public

class adaptertest

}

輸出與第一種一樣,只是適配的方法不同而已。

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

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

public

inte***ce sourceable

public

abstract

class

implements

sourceable

public

void

method2(){}

}

public

class

sourcesub1

extends

public

void

method1()

}

public

class

sourcesub2

extends

public

void

method2()

}

public

public

static

void

main(string args)

}

測試輸出:

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

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

達到了我們的效果!

設計模式之介面卡模式(類介面卡模式)

介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...

設計模式之 介面卡模式

1,介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法一起工作的兩個類能夠在一起工作 2,介面卡模式有兩種 1 類的介面卡模式 介面卡類繼承源類 這樣介面卡類就繼承了源類有的方法 並實現目標介面,實現在源類中沒有而在介面中有的方法,從而實現介面卡類有目標介面的所有方...

設計模式之介面卡模式

介面卡模式定義 將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。簡單定義 封裝物件,並提供不同的介面。簡單例子 鴨子介面 package headfirst.adapter.ducks public inte ce duck 具體鴨子 package headfi...