介面卡(Adapter)模式

2021-07-02 07:46:13 字數 1217 閱讀 3025

客戶端就是需要呼叫我們**的物件。通常,在**已經存在的情況下編寫客戶端**,開發人員可以採取模擬客戶端的方法呼叫我們提供的介面物件。然而,客戶端**也可能與你的**單獨進行開發。例如,設計的火箭方針程式會使用你所提供的火箭資訊,但是對於火箭應該擁有怎樣的行為,**器也會擁有自己的定義。在這樣的情況下,會發現現有的類雖然提供了客戶端需要的服務,卻被定義為不同的方法名。這事,我們就需要運用介面卡模式。

介面卡模式的意圖在於,使用不同介面的類所提供的服務為客戶端提供它所期望的介面。

當我們需要適配現有**時,可能會發現客戶端開發人員已經事先考慮到這種情形。開發人員為客戶端使用的服務提供了介面,如圖所示。requiredinte***ce介面宣告了client類所要呼叫的requiredmethod()方法。在existingclass類中,則定義了usefulmethod()方法,它是client類需要的實現。若要對existingclass類進行適配,滿足客戶端物件的需要,就可以編寫乙個繼承自existingclass,並同時實現requiredinte***ce介面的類,通過重寫requiredmethod()方法將客戶端的請求委派給usefulmethod()方法。

圖中的newclass類就是介面卡模式的乙個例子。該類的例項同時也是requiredinte***ce的例項。換言之,newclass類滿足了客戶端的要求。

當客戶端在介面中定義了它所期待的行為時,就可以運用介面卡模式,提供乙個實現該介面的類,並同時令其成為現有類的介面。倘若沒有定義客戶端期待的介面,也可以運用介面卡模式,但必須使用」物件介面卡「。

上面的設計屬於類的介面卡,通過子類進行適配。在類的介面卡中,新的介面卡類實現了需要的介面,並繼承自現有的類。當你需要適配的一組方法並非被定義在介面中時,這種方式就不奏效了。此時就可以建立乙個物件介面卡,它使用了委派而非繼承。下面展示了這樣的設計。

通過繼承你所需要的類,可以建立乙個物件介面卡,利用現有類的例項物件,滿足所需要方法。

上面的newclass類是介面卡的乙個例子。該類的例項同時也是requiredclass類的例項。換言之,newclass類滿足了客戶端的需要。newclass類通過使用exitingclass例項物件,可以將existingclass類適配為符合客戶端的需要。

介面卡模式 Adapter

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

Adapter 介面卡模式

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

Adapter介面卡模式

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