适配器我们经常用,比如在写RecyclerView的时候,这是现成的适配器。
对于适配器的目的,举个生活中的例子:我们在美国买个水牙线带回国内,就不能直接用,因为电压不同,这时候就需要能转换电压的适配器登场了,通过这个适配器,我们就能在国内用这个美国带回来的水牙线了。
放在开发工作中也一样,很多情况下,接口不匹配。解决接口不兼容问题的一个方法是更改接口本身,但这样做有可能会导致牵一发而动全身。有了适配器就不一样了,它能够允许我们在不真正破坏整体结构的情况下大规模更改软件。
假设我们在开发维护一个软件园内部送餐App,一直以来是用楼号、楼层、办公室、工位等字段来定位客户,但是现在配送的办公室改变了布局,从传统的小型办公室变成了现代化的开放式结构,这样办公室字段就变得没有意义了,我们必须重新对字段进行设计。
①首先来看下原始的接口和实现,如下所示:
/**
* 原始位置接口
*/
interface OldLocation {
fun getBuilding():String
fun setBuilding(building:String)
fun getFloor():Int
fun setFloor(floor:Int)
fun getOffice():String
fun setOffice(office:String)
fun getDesk():Int
fun setDesk(desk:Int)
}
/**
* 原始位置实现
*/
class CustomerLocation :OldLocation{
private var building:String = ""
private var floor:Int = 0
private var office:String = ""