介面卡模式

2021-08-19 21:59:50 字數 3254 閱讀 6748

1.不使用介面卡的例子:

iprogramer.class(程式猿擼**的介面)

package com.noadapter;

public

inte***ce

iprogramer

programer.class(程式猿的類,實現了擼**的介面)

package com.noadapter;

public

class

programer

implements

iprogramer

}

下面的教師介面以及實現教師的類也和上面程式猿的一樣:

iteacher.class(教師教書介面):

package com.noadapter;

public

inte***ce

iteacher

teacher.class(實現了教書的教師類):

package com.noadapter;

public

class

teacher

implements

iteacher

}

mytest.class測試類:

package com.noadapter;

public

class

mytest

}

執行結果:

理解:如果不是用介面卡模糊,那麼我們要定義出所有的工種物件(程式猿,教師等等),還要為他們實現各自的介面,然後對他們的方法進行呼叫,這樣有多少個工種,就要寫多少個方法呼叫,比較麻煩。

2.只定義乙個介面卡實現類

在前面的基礎上修改,增加了iworkadapter.classy以及它的實現類workeradapter.class,以及更改了測試方法,其他的都沒有改變,**結構如下:

增加的iworkadapter.class(介面卡的介面):

public

inte***ce

iworkadapter

增加的workadapter.class(介面卡的類):

public

class

workadaper

implements

iworkadapter

if(worker instanceof

iteacher)}

}

更改過的測試類mytest.class:

public

class

mytest

;//定義乙個介面卡

iworkadapter adapter =

newworkadaper()

;//介面卡遍歷物件

for(object worker:workers)

}}

結果依然不變:

分析:只寫乙個介面卡,功能上就像是把介面集中到一起,在中間加了一層,這一層把呼叫不同工種(程式猿,教師)之間的差異遮蔽掉了,這樣也達到了解耦合的作用。

3.多個介面卡的模式

也就是為每乙個工種都定義乙個介面卡(在乙個介面卡的基礎上進行修改)

修改iworkadapter.class

public

inte***ce

iworkadapter

定義乙個teacheradapter.class

public

class

teacheradapter

implements

iworkadapter

@override

public

boolean

supports

(object worker)

}

定義乙個programmeradapter.class

public

class

programmeradapter

implements

iworkadapter

@override

public

boolean

supports

(object worker)

}

測試類(test.class):

public

class

mytest

;//介面卡遍歷物件

for(object worker:workers)

}public

static iworkadapter getadapter

(object object)

;for

(iworkadapter adapter:adapters)

}return null;

}}

個人理解:其實多個介面卡的根本是去獲取支援該物件的介面卡,通過該介面卡來使用這個物件。

技術之路不在一時,山高水長,縱使緩慢,馳而不息。

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

做個筆記 引用 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...