介面卡模式

2021-09-11 19:19:40 字數 2203 閱讀 4417

一般一根資料線只能給一類手機充電,那如果要給另乙個類手機充電要怎麼辦呢?這個時候可能需要一根一拖多的資料線,它可以幫我適配各種手機。而介面卡模式的作用和這個是一樣的就是用來解決兩個介面不相容的問題。

假如已經開發了乙個日誌系統,其中乙個介面是收集日誌並傳送的日誌展示模組,另乙個介面就是接受某種日誌然後展示到前端。但是由於在前期開發時日誌格式已經定義好了,現在有一種新的日誌格式接入系統,為了將新的日誌格式資料在前端展示,需要使用乙個介面卡適配新日誌格式。

原有日誌系統實現和測試執行:

// 定義日誌生產者

public

class

defaultlogproducer

}// 定義原有日誌型別

public

class

defaultlogtype

// 定義原有的日誌消費者

public

class

logconsumer

else}}

// 原有系統執行邏輯

defaultlogproducer defaultlogproducer =

newdefaultlogproducer()

; defaultlogtype defaultlogtype = defaultlogproducer.

product()

; logconsumer logconsumer =

newlogconsumer()

; logconsumer.

consume

(defaultlogtype);--

----

----

----

----

----

----

----

----

-console列印

原有系統生產的日誌格式:com.design.adapter.defaultlogtype

正在消費型別為:com.design.adapter.defaultlogtype的日誌

引入了新的日誌型別之後:

// 定義新的日誌型別

public

class

newlogtype1

// 新的日誌生產者

public

class

newlogproducer1

}// 增加新日誌格式型別之後

newlogproducer1 newlogproducer1 =

newnewlogproducer1()

;newlogtype1 newlogtype1 = newlogproducer1.

product()

;logconsumer.

consume

(newlogtype1);--

----

----

----

----

----

----

----

----

-console列印

新系統生產的日誌格式:com.design.adapter.newlogtype1

系統不支援型別:com.design.adapter.newlogtype1的日誌

加入介面卡之後

public

class

logadapter

else}}

// 測試**

logadapter logadapter =

newlogadapter()

;defaultlogtype adaptlogtype = logadapter.

adapt

(newlogtype1)

;logconsumer.

consume

(adaptlogtype);--

----

----

----

----

----

----

----

----

-console列印

將日誌型別:com.design.adapter.newlogtype1適配成:com.design.adapter.defaultlogtype格式成功

正在消費型別為:com.design.adapter.defaultlogtype的日誌

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

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