乙個簡單的例子講講Android開發中的介面卡模式

2021-10-18 23:04:48 字數 1959 閱讀 8259

介面卡我們經常用,比如在寫recyclerview的時候,這是現成的介面卡。

對於介面卡的目的,舉個生活中的例子:我們在美國買個水牙線帶回國內,就不能直接用,因為電壓不同,這時候就需要能轉換電壓的介面卡登場了,通過這個介面卡,我們就能在國內用這個美國帶回來的水牙線了。

放在開發工作中也一樣,很多情況下,介面不匹配。解決介面不相容問題的乙個方法是更改介面本身,但這樣做有可能會導致牽一髮而動全身。有了介面卡就不一樣了,它能夠允許我們在不真正破壞整體結構的情況下大規模更改軟體。

①首先來看下原始的介面和實現,如下所示:

/**

* 原始位置介面

*/inte***ce oldlocation

/**

* 原始位置實現

*/class customerlocation :oldlocation

override

funsetbuilding

(building: string)

override

fungetfloor()

: int

override

funsetfloor

(floor: int)

override

fungetoffice()

: string

override

funsetoffice

(office: string)

override

fungetdesk()

: int

override

funsetdesk

(desk: int)

}

②適配上面的類,編寫介面卡類和測試**,將應用從舊系統轉換為新系統。

先寫乙個新的介面:

inte***ce newlocation
再來寫介面卡,介面卡類如下所示:

/**

* 介面卡類

*/class

adapter

(private

val oldlocation: oldlocation)

:newlocation

override

fungetbuilding()

: string

override

funsetbuilding

(building: string)

override

fungetfloor()

: int

override

funsetfloor

(floor: int)

override

fungetdesk()

: int

override

funsetdesk

(desk: int)

}

最後來測試一下:

//測試介面卡模式

val oldlocation =

customerlocation()

oldlocation.

setbuilding

("a座"

)oldlocation.

setfloor(3

)oldlocation.

setoffice

("1203室"

)oldlocation.

setdesk(14

)val newlocation =

adapter

(oldlocation)

log.

d(tag,

"新的配送位址為:$

,$層,"+"$

工位")

結果如圖所示:

可以看到,介面卡模式的關鍵就是實現新介面幷包裝舊介面

乙個簡單css例子

lang en charset utf 8 css講解title rel stylesheet href style.css body div dd xddaa hover abc ulli first child ulli last child ulli nth child 3 ulli only...

乙個簡單的json例子

名稱 年齡郵箱 response.setcontenttype text html charset utf 8 response.setheader cache control no cache jsonobject json new jsonobject try json.put jobs mem...

乙個poll的簡單例子

該程式使用poll事件機制實現了乙個簡單的訊息回顯的功能,其伺服器端和客戶端的 如下所示 伺服器端 start from the very beginning,and to create greatness author chuangwei lin e mail 979951191 qq.com b...