整體思路是這樣的,第一部分介紹什麼是介面卡模式,第二部分介紹介面卡模式值得思考的地方。
1:定義:將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。
主要解決在軟體系統中,常常要將一些"現存的物件"放到新的環境中,而新環境要求的介面是現物件不能滿足的。
1、以前開發的系統存在滿足新系統功能需求的類,但其介面同新系統的介面不一致。
2、使用第三方提供的元件,但元件介面定義和自己要求的介面定義不同。
1、優點:
客戶端通過介面卡可以透明地呼叫目標介面。
復用了現存的類,程式設計師不需要修改原有**而重用現有的適配者類。
將目標類和適配者類解耦,解決了目標類和適配者類介面不一致的問題。
2、缺點:
對類介面卡來說,更換介面卡的實現過程比較複雜 。
過多地使用介面卡,會讓系統非常零亂,不易整體進行把握。比如,明明看到呼叫的是 a介面,其實內部被適配成了 b介面的實現,乙個系統如果太多出現這種情況,無異於一場災難。因此如果不是很有必要,可以不使用介面卡,而是直接對系統進行重構
1、類介面卡模式是通過重繼承方式實現。
2、物件介面卡模式可釆用將現有元件庫中已經實現的元件引入介面卡類中。
3、介面卡模式(adapter)包含以下主要角色:
目標(target)介面:當前系統業務所期待的介面,它可以是抽象類或介面。
適配者(adaptee)類:它是被訪問和適配的現存元件庫中的元件介面。
介面卡(adapter)類:它是乙個轉換器,通過繼承或引用適配者的物件,把適配者介面轉換成目標介面,讓客戶按目標介面的格式訪問適配者。
4、類介面卡模式的結構圖如圖:
5、物件介面卡模式的結構圖如圖:
1:目標介面(adapterpattern):
2:適配者介面(adaptee):
3:類介面卡(classadapter):
4:物件介面卡(objectadapter):
5:客戶端**:
如上就是對介面卡模式的介紹,接下來將介紹介面卡模式值得思考的地方。
1、問題:為什麼要用介面卡來解決介面不相容的問題?例如上面的**,不用介面卡一樣也能實現。
2、答案:上面的例子比較簡單,無法展現出介面卡模式的作用。拿現實中的例子來說明。比如說電腦連線顯示器的插槽是type-c,但是顯示器只提供hdmi插頭,我們無法在電腦上在加乙個hdmi插槽,也無法讓顯示器提供type-c的插頭,此時就需要乙個介面卡,將hdmi的插頭轉換成type-c插頭。同理,在程式的世界裡也是這樣。程式a需要a型別的介面,但是程式b只能提供b型別的介面,程式a無法做出改變,程式b也無法做出改變,這樣就需要程式c來鏈結程式a和程式b。
3:重點說明,無法做出改變的原因如下:
沒有能力做出改變 (電腦已經成型了,無法再增加乙個hdmi插槽,同理程式a無法提供程式b要求的內容(例如:引數))
做出改變會影響原有設計(就算可以增加乙個hdmi插槽,勢必要改變原有電腦零部件的位置,同理程式a做出改變會破壞程式a的原有**結構)
以上就是我對介面卡模式的理解,**說的不對還請指教。
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
全面理解設計模式之介面卡模式
什麼是介面卡模式,它能做什麼?下面是比較官方的解釋。介面卡模式 adapter pattern 是作為兩個不相容的介面之間的橋梁。將乙個類的介面轉換成客戶希望的另外乙個介面,使原本由於介面不相容而不能一起工作的類可以一起工作。個人比較喜歡看 所以我希望有乙個 閱讀器 target 能夠直接閱讀。pu...
深入設計模式(三) 介面卡模式
一 介面卡設計模式介紹 介面卡模式,將乙個類裝換成客戶期望的另外乙個介面。adapter模式使用的原本由於介面不相容而不能茉莉花物那些可以一起工作。二 解決的問題 1 使用第三方元件,而這個元件的介面與目前系統介面不相容 如方法與系統方法不一致等 可以使用介面卡模式解決介面不相容問題。2 使用早前專...