介面卡我們經常用,比如在寫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...