介面卡模式 Adapter

2021-09-19 21:12:16 字數 2076 閱讀 9002

屬於結構型模式

主要分為三類:類介面卡模式、物件的介面卡模式、介面的介面卡模式。

需要被適配的類、介面、物件(我們有的),簡稱src(source)

最終需要的輸出(我們想要的),簡稱dst(destination,即target)

介面卡稱之為adapter

一句話描述介面卡模式的感覺:src->adapter->dst,即src以某種形式(三種形式分別對應三種介面卡模式)給到adapter裡,最終轉化成了dst。

1 系統需要使用現有的類,而這些類的介面不符合系統的需要。

2 想要建立乙個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。

3 需要乙個統一的輸出介面,而輸入端的型別不可預知。

一句話描述:adapter類,通過繼承 src類,實現 dst 類介面,完成src->dst的適配。

我們通過乙個最常用的例子來說明

生活中最常見的就是充電器,220v的交流電被轉換成5v的直流電,充電器在其中就擔當了介面卡的功能

既然我們是進行適配,那就說明是基於某乙個功能點的實現,所以我們先定義乙個輸出220v交流電的功能,這個功能如下

/// /// 220v電壓

///

public class voltage220

}

定義乙個介面,介面的方法簽名是轉換(220v-5v)

/// /// 客戶需要的5v電壓介面

///

public inte***ce voltage5

接下去我們開始定義介面卡類

!!!注意點

1、繼承後來的類

2、實現介面卡介面

/// /// 類介面卡

///

public class voltageadapter : voltage220, voltage5

}

此時我們需要乙個裝置,使用介面卡檢視功能是否正確

定義乙個手機類,實現轉換功能

mobile.charging(介面卡 box1)

例項化手機,呼叫充電方法,形參是介面卡的例項

/// /// 手機類

///

public class mobile

else if (voltage5.output5v() > 5)

}}

功能實現

/// /// 類介面卡

///

public static void classstart()

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

即:持有 src類,實現 dst 類介面,完成src->dst的適配。

(根據「合成復用原則」,在系統中盡量使用關聯關係來替代繼承關係,因此大部分結構型模式都是物件結構型模式。)

/// /// 物件介面卡

///

public class voltageadapter2 : voltage5

public int output5v()

return dst;

}}

功能實現

/// /// 物件介面卡

///

public static void objectstart()

物件介面卡和類介面卡其實算是同一種思想,只不過實現方式不同。

根據合成復用原則,組合大於繼承,

所以它解決了類介面卡必須繼承src的侷限性問題,也不再強求dst必須是介面。

同樣的它使用成本更低,更靈活

介面卡模式 Adapter

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

Adapter 介面卡模式

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

Adapter介面卡模式

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