將現有的**能力適配到新的介面
趙高欲為亂, 恐群臣不聽, 乃先設驗, 持鹿獻於二世日: 「馬也」 二世笑曰: 「丞相誤耶? 謂鹿為馬.」 問左右, 左右或默, 或言馬以阿順趙高, 或言鹿者. 高因陰中諸言鹿者以法
這就是很有名的指鹿為馬的故事了, 我們可以看到趙高需要的是個馬, 但實際上是個鹿, 我們怎麼通過介面卡模式來實現他的指鹿為馬呢
我們先定義一下鹿和馬的介面:
馬:
public
inte***ce
horse
extends
target
鹿:
public
inte***ce
deer
extends
adaptee
其中 target 和 adaptee 是標記形介面, 無實際意義
本來這二個介面其實沒什麼關聯, 但是現在的情況是我們有個鹿, 但是要給皇帝一匹馬, 先看看我們這條鹿:
public
class
mydeer
implements
deer
@override
public
void
walk()
@override
public
void
sleep()
}
我們將這個鹿變成馬:
@data
@allargsconstructor
public
class
hourseadapter
implements
horse
@override
public
void
run(
)@override
public
void
sleep()
}
使用的時候就是這樣:
horse horse =
newhourseadapter
(new
mydeer()
);horse.
eat();
horse.
run();
horse.
sleep()
;
輸出結果:
吃草
走路, 遇到緊急情況衝刺
睡覺
類圖:
一般微服務結構下或者依賴第三方介面或者 jar 包的時候, 可以考慮使用介面卡模式對**進行相容和模型防腐
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 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...