設計模式 介面卡模式(adapter)

2021-09-12 05:15:34 字數 1461 閱讀 8595

介面卡模式定義:

adapter模式又叫介面卡模式,顧名思義,這個模式就是把乙個不能用的東西「適配」成可以用的東西。

將兩個不相容的類糾合在一起使用,屬於結構型模式,需要有adaptee(被適配者)和adaptor(介面卡)兩個身份。

為何使用?

我們經常碰到要將兩個沒有關係的類組合在一起使用,第一解決方案是:修改各自類的介面,但是如果我們沒有源**,或者,我們不願意為了乙個應用而修改各自的介面。 怎麼辦?

使用adapter,在這兩種介面之間建立乙個混合介面(混血兒)。

設計

那麼是如何「適配」的呢?比如,東西a想使用東西b,但是a沒有能力(沒法)使用b,怎麼辦?a就讓東西c幫忙,a通過c就可以用b了。c如何幫忙呢?c一邊可以通過乙個「手柄」讓a握住,a一用力,c就在另一邊握住b的「手柄」,使用b。這樣a就可以間接的使用到b了。說的這麼多,搞的糊里糊塗的,其實a、b就好像是兩節水管,c就好像是連線水管的接頭。

如何使用?

實現adapter

,有兩種方式:組合(composition)和繼承(inheritance)

假設我們要打樁,有兩種類:方形樁 圓形樁

public class squarepeg

}

public class roundpeg 

}

現在有乙個應用,需要既打方形樁,又打圓形樁.那麼我們需要將這兩個沒有關係的類綜合應用.假設roundpeg我們沒有源**,或源**我們不想修改,那麼我們使用adapter來實現這個應用:

public class pegadapter extends squarepeg 

public void insert(string str)

}

在上面**中,roundpeg屬於adaptee,是被適配者.pegadapter是adapter,將adaptee(被適配者roundpeg)和target(目標squarepeg)進行適配.實際上這是將組合方法(composition)和繼承(inheritance)方法綜合運用。

pegadapter首先繼承squarepeg,然後使用new的組合生成物件方式,生成roundpeg的物件roundpeg,再過載父類insert()方法。從這裡,你也了解使用new生成物件和使用extends繼承生成物件的不同,前者無需對原來的類修改,甚至無需要知道其內部結構和源**。

物件模式實現的adapter(純組合模式)

public class pegadapter

public void insert(string str)

}

java設計模式6 介面卡模式(Adapter)

我們接著討論設計模式,上篇文章我講完了5種建立型模式,這章開始,我將講下7種結構型模式 介面卡模式 裝飾模式 模式 外觀模式 橋接模式 組合模式 享元模式。其中物件的介面卡模式是各種模式的起源,我們看下面的圖 介面卡模式將某個類的介面轉換成客戶端期望的另乙個介面表示,目的是消除由於介面不匹配所造成的...

Java設計模式五 介面卡模式 Adapter

將一類的介面轉換成客戶希望的另外乙個介面,adapter模式使得原本由於介面不相容而不能一起工作那些類可以一起工作。適用情況 使用的前提是 介面中規定了所有要實現的方法 但乙個要實現此介面的具體類,只用到了其中的幾個方法,而其它的方法都是沒有用的。實現方法 用乙個抽象類實現已有的介面,並實現介面中所...

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

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