設計模式之結構模式 介面卡模式

2021-10-01 22:47:24 字數 2025 閱讀 5760

介面卡模式(adapter)

介面卡模式將某個類的介面轉換成使用者期望的另乙個介面行為,目的是為了適應由於介面與介面之間不匹配所帶來的類的相容性問題。介面卡模式主要分為三大類:類的介面卡模式、物件的介面卡模式、介面的介面卡模式。首先我們來看第一種,類的介面卡模式;

首先我們先建立乙個類:

public class operationa 

}

接著我們再建立乙個介面,用來適配上述的operationa ,我們在這個介面中命名乙個方法,跟上述類中的operationa方法同名

public inte***ce operation
最後來建立介面卡類,繼承operationa,實現operation介面

public class classadapter extends operationa implements operation

}

然後我們來測試一下:

public class adapttest
輸出結果

operation a

operation b

至此,介面卡類實現了operationa中的中的operationa()方法,這就是類介面卡模式。接著,我們來看下物件介面卡,其實就是修改下上述的介面卡類,通過例項化operationa類,放到介面卡的建構函式中實現,**如下:

public class objectadapter implements operation

public void operationa()

public void operationb()

}

接著測試:

public class adapttest
輸出結果:

operation a

operation b

同樣介面卡類也實現了類operationa中的方法。最後我們來寫介面介面卡,有時我們寫的乙個介面中有多個抽象方法,當我們寫該介面的實現類時,必須實現該介面的所有方法,有時候這非常費事,因為我們並不需要實現所有的方法,我們只需要實現我們關心的方法,此時介面介面卡模式就非常滿足我們的需求。同樣,先看**:

首先我們需要宣告乙個抽象類,實現operation介面,但是我們可以不寫具體的實現內容,

public abstract class operationfather implements operation

public void operationb()

}

接著我們來寫兩個實現類,繼承上述父類

son1實現operationb方法

public class operationson1 extends operationfather

}

son2實現operationa方法

public class operationson2 extends operationfather

}

這樣就完成了,其實就是借用乙個抽象類,具體的實現還是子類,我們真正要實現功能的是子類,但是子類不和原始介面照面。下面測試下:

public class adapttest 

}

輸出結果:

operationb son1

operationa son2

三種介面卡模式的應用場景:

(1)類的介面卡模式:當需要將乙個類轉換成滿足另乙個新介面的類時,可以使用類的介面卡模式,建立乙個新類,繼承原有的類,實現新的接。

(2)物件的介面卡模式:當我們需要將乙個物件轉換成滿足另乙個新介面的物件時,可以建立乙個包裝類,new乙個原類構造到包裝類中,接著在包裝類的方法中,呼叫原類的例項方法就行。

(3)介面的介面卡模式:當不想實現乙個介面中所有的方法時候,可以建立乙個父抽象類,實現所有方法,我們實現子類功能的時候,繼承父抽象類即可。

設計模式之介面卡模式(類介面卡模式)

介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...

設計模式(09) 介面卡模式(簡單入門 結構模式)

from now on,let us begin design patterns。介面卡模式 通用類圖 角色說明 1.target目標角色 定義期望的介面 2.adaptee源角色 待轉換的源角色 3.adapter介面卡角色 通過繼承或是類關聯的方式,將源角色轉換為目標角色 關鍵點 介面卡類繼承原...

設計模式之結構類模式 介面卡模式

介面卡模式 adapter pattern 又叫做變壓器模式,也叫做包裝模式。包裝模式還包括裝飾模式。定義 將乙個類的介面變換成客戶端所期待的另乙個介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。通用類圖 target目標角色 該角色定義把其他類轉換為何種介面,也就是我們期望的介...