介面卡模式

2021-09-10 14:38:51 字數 1850 閱讀 1068

網路購物讓現在的商品交易消除了距離感。有時候我們會買一些國外的商品,比如日本直郵的ps4,但是有乙個比較棘手的問題就是兩國使用的電線插頭規格是不一樣的,日本直郵的ps4插頭適配不了中國的插座。這時候我們需要在萬能的**上買乙個轉換頭,一邊可以插在中國的插座上,一邊可以接受日本規格的插頭,這樣我們就可以愉快的打遊戲了。這個轉換頭學名就是介面卡,而這種轉換的方式就叫做介面卡模式。

其實程式中我們經常要接觸到介面卡模式的。比如,有乙個辦公軟體系統,在給不同的客戶公司使用的時候會按照客戶的要求使用不同的資料庫,我們知道資料庫的不同可能導致介面的差異,難道我們要重新寫一套對應新資料庫的介面嗎?答案是否定的,不管從成本上還是維護上來說都不能允許我們這麼幹。那麼,介面卡模式需要出馬了,將這個新的庫介面轉換成我們所需要的介面。

介面卡模式將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以互作無間。

客戶端使用介面卡的過程如下:

這個模式可以通過建立介面卡進行介面轉換,讓不相容的介面變成相容。這可以讓客戶從實現的介面解耦。如果在一段時間後,我們要改變介面,介面卡可以將改變的部分封裝起來,客戶就不必為了應對不同的介面而每次跟著改變。

target:抽象目標介面卡。定義提供給客戶端的介面

adapter:介面卡類。實現目標介面卡介面

adaptee:被介面卡類。

森林要舉行一年一度的跨年晚會,鴨子家出了一場群體舞蹈表演。可是臨到上場表演的時候發現小兒子生病不能上場了,於是鴨子爸爸找到了好朋友火雞先生幫忙客串下。可是火雞先生的動作不像鴨子怎麼辦?現在幫助鴨子爸爸出個主意。

目標介面duck:

public

inte***ce

duck

被適配者介面turkey:

public

inte***ce

turkey

被適配者具體類wildturkey:

public

class

wildturkey

implements

turkey

@override

public

void

fly(

)}

介面卡類turkeyadapter:

public

class

turkeyadapter

implements

duck

@override

public

void

quack()

@override

public

void

fly()}

}

正常鴨子成員:

public

class

redduck

implements

duck

@override

public

void

fly(

)}

客戶端:

public

class

client

public

static

void

main

(string args)

}

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...