介面卡模式

2021-08-07 03:44:42 字數 1812 閱讀 7884

介面卡模式,乙個中間類來支撐的模式。a和b之間需要有一些互動,比如a是法國人,b是土耳其人,a想和b通話,但是沒有b不會法語,a不會土耳其語,這個時候需要乙個翻譯,這個翻譯來作為中間的橋梁給他們兩個分別翻譯為法語與土耳其語。蘋果電腦連線顯示器的雷電轉介面。這些都是可以用介面卡來實現的。

介面卡就是將乙個類的介面轉化為客戶希望的另乙個介面,是的原來由於介面不相容而不能一起工作的類可以一起工作。

比如在你目前的專案中有這樣乙個場景,在以前的時候資料庫中這樣存放了乙個產品,

public

class producta

public

long getitem_id()

public

void setitem_id(long

item_id)

public string getitem_name()

public

void setitem_name(string item_name)

public

float getprice()

public

void setprice(float

price)

public string getunit()

public

void setunit(string unit)

@override

public string tostring()

}而在專案對接中你們使用了這樣的產品類productb

public

class productb

public productb(string itemid, string price, string itemname, string itemunit)

public string getitemid()

public

void setitemid(string itemid)

public string getprice()

public

void setprice(string price)

public string getitemname()

public

void setitemname(string itemname)

public string getitemunit()

public

void setitemunit(string itemunit)

@override

public string tostring()

} 這時為了簡單的在不動原**的前提下實現你們兩端的資料互通有無,就需要介面卡將資料轉換這裡有乙個比較簡單的轉換器

public

class producta2badapter

public productb transform() }

在demo中使用

publicstatic finalvoidmain(string

args

) 輸出結果

item_id:289796235415item_name:hatprice:15.0unit:pice

itemid:289796235415itemname:hatprice:15.0unit:pice

是不是就可以解決了從a部門到b部門之間的轉換,你也可以寫乙個比較通用的方法,這樣只需要乙個介面卡物件就可以實現批量的產品轉換,如果資料量比較大物件比較複雜還可以加上原型模式。

介面卡模式是為了解決在原有基礎上開發的問題,如果在一開始a和b兩個部門就可以溝通使用同乙個模型就不會有這種事。所以事前就考慮好這種問題的話就不會出現這個問題。

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

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