介面卡模式

2021-06-22 04:56:31 字數 1808 閱讀 2143

涉及的知識:

1.物件介面卡模式:通過對被適配的物件進行組合(可以對多個類進行適配,缺點,如果適配的模擬較多,則會造成結構不清晰)

2.類介面卡模式:通過繼承被適配的類來實現(只能針對某乙個類進行適配)

3.涉及原則:1.使用物件組合,面向介面和抽象程式設計。 2.開-閉原則

4.預設的介面卡模式(default adapter):預設的介面卡模式為乙個介面提供預設的實現,子類可以從這個預設的實現類進行擴充套件,而不必而原有的介面進行擴充套件。相信大家在學習swing時「awt中事件的處理」有所接觸。他的好處在於客戶端不需要去實現與他無關的方法,只做他最關心的事。

這種模式的核心歸結如下:當你想實現乙個介面但又不想實現所有介面方法,只想去實現一部分方法時,就用中預設的介面卡模式,他的方法是在介面和具體實現類中新增乙個抽象類,而用抽象類去空實現目標介面的所有方法。而具體的實現類只需要覆蓋其需要完成的方法即可。(依賴倒置的中介軟體)

實現思想

1.現又乙個專門輸出220v,12v的類(只有相近的人,才可能發生轉換,不可能電能夠轉換成磚頭,所以,一般他們都會繼承自乙個專門的抽象父類),其又專門的實現介面,專門的父類

2.出現新的需求需要將220v的電源轉換成12的電源,這是需要新建乙個adaper類,實現12v 的介面,組合被適配的類(220v)。

3.通過新建的adapter類的構造方法,將220v物件傳入,在12v介面實現類中完成適配

demo: 220v 轉換成12v

1.被適配介面  ipower220

publicinte***ceipower220

2.適配介面  ipower12

publicinte***ceipower12

3.基類,適配和被適配物件之間,往往都有共同的基類,即有共性,磚頭是無法變成饅頭的

public

class abstractbase

public

void setpower(float power)

public

int getunit()

public

void setunit(int unit)

}4.被適配實現類

public

class power220 extends abstractbase implements ipower220

@override

public

void output220()

}5.適配的實現類

public

class power12 extends abstractbase implements ipower12

@override

public

void output12()

}6.適配轉換類

public

class power220to12adapter implements ipower12

@override

public

void output12()

system.out.println("將"+this.mypower220.getpower()+"轉換為"+(int)power);}}

7.測試

power220 p220=new power220();

p220.output220();

power12 p12=new power12();

p12.output12();

power220to12adapter adapter=new power220to12adapter(p220);

adapter.output12();

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...

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

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