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...