介面卡模式是各種模式的起源
介面卡模式將某個類的介面轉換成客戶端期望的另乙個介面表示,目的是消除由於介面不匹配所造成的類的相容性問題。
核心思想就是:有乙個source類,擁有乙個方法,待適配,目標介面是targetable,通過adapter類,將source的功能擴充套件到targetable裡。
1、介面卡模式分類:
a.類的介面卡模式.
b.物件的介面卡模式.
c.介面的介面卡模式。
2、類的介面卡模式,**演示:
a.source類
public
class source
}
b.目標介面targetable
public
inte***ce targetable
c.類介面卡
//繼承了source,實現新介面,這樣我們就可以用這個類既可以訪問之前的method1,也可以訪問新類的method2了
public
class
adapter
extends
source
implements
targetable
}
d.測試類
public
class adaptertest
}
結果:
this is original method!
this is the targetable method!
這樣targetable介面的實現類就具有了source類的功能。
3、物件的介面卡模式,**演示:
基本思路和類的介面卡模式相同,只是將adapter類作修改,這次不繼承source類,而是持有source類的例項,以達到解決相容性的問題。
a.source類
public
class
source
} b.目標介面targetable
public
inte***ce
targetable
上面2個和之前一樣
c.物件介面卡
public
class
adapter
implements
targetable
@override
public
void
method2()
@override
public
void
method1()
}d.測試類
public
class
adaptertest
} 結果:
this is original method!
this is the targetable method!
和上面的功能一樣,只是把需要適配的物件傳進來了,沒有使用繼承的方式。
4、介面的介面卡模式,**演示:(比較重要)
有時我們寫的乙個介面中有多個抽象方法,當我們寫該介面的實現類時,必須實現該介面的所有方法,這明顯有時比較浪費,因為並不是所有的方法都是我們需要的,有時只需要某一些。
為了解決這個問題,我們引入了介面的介面卡模式,借助於乙個抽象類,該抽象類實現了該介面,實現了所有的方法,而我們不和原始的介面打交道,只和該抽象類取得聯絡。
我們寫乙個類,繼承該抽象類,重寫我們需要的方法就行
a.介面sourceable
public
inte***ce
sourceable
目的就是實現所有的介面,但是方法都是空的,為的就是給其他的類繼承
public
abstract
class
implements
sourceable
public
void method2(){}
} c.繼承抽象類的類(重寫我們需要的方法)
public
class
sourcesub1
extends
public
void method1()
} public
class
sourcesub2
extends
public
void method2()
} d.測試
public
class
public
static
void main(string args)
} 輸出:
the sourceable inte***ce's
first
sub1!
thesourceable
inte***ce's
second
sub2!
5、三種介面卡模式的應用場景
類的介面卡模式:當希望將乙個類轉換成滿足另乙個新介面的類時,可以使用類的介面卡模式,建立乙個新類,繼承原有的類,實現新的介面即可。
java結構型設計模式 介面卡模式
1 模式理解 介面卡模式其實還是比較好理解的,就拿多功能插線板來說把,就相當於乙個介面卡,很多態別的插頭都是可以在這個插線板上匹配上的。說的專業一點就是當多個物件想實現同一類功能的時候,可以通過介面卡來調取相應的物件,實現給物件相應的功能,哈哈好像說的也不怎麼專業 2 應用場景 介面卡模式跟工廠模式...
設計模式 結構型 介面卡
pragma once ifndef adapter h define adapter h 需要被adapt 的類 class target virtual target virtual void request 0 與被adapt 物件提供不相容介面的類 class adaptee adaptee...
設計模式 結構型 介面卡模式
什麼是介面卡模式 將乙個介面轉換成客戶希望的另乙個介面,使介面不相容的那些類可以一起工作。介面卡模式既可以作為類結構型模式,也可以作為物件結構型模式。介面卡的分類 介面卡中有類介面卡和物件介面卡,兩者的區別在於介面卡與適配者的關係不同,物件介面卡中兩者之間的關係是關聯關係,類介面卡模式中兩者是繼承關...