例如需要对220V的电压(适配者) , 通过适配器, 转换成 5V 的电压(目标)
对象适配器模式使用较多。
1. Adaptee角色(适配者,需要适配的接口)
class Volt220 {
fun getVolt20():Int{
return 220;
}
}
2. Target 角色 (目标)
interface FiveVolt {
fun getVolt5(): Int
}
3. Adpater(适配器)
class VoltAdapter(private val volt220: Volt220) : FiveVolt {
// //没有用到???
// fun getVolt220(): Int{
// return volt220.getVolt20()
// }
override fun getVolt5(): Int {
//return 5
return volt220.getVolt20() / 44
}
}
聚合了一个适配者, 通过它获取输入的值 然后再处理,返回目标需要的 5V
(根据输入, 输出统一)
4. 测试代码
@Test
fun testObjectAdapter(){
Log.d(TAG, "====================ObjectAdapter====================")
var voltAdapter = VoltAdapter(Volt220())
Log.d(TAG, "output volt = ${voltAdapter.getVolt5()}")
}
5. 输出结果
11-24 16:21:02.707 D DesignPattern: ====================ObjectAdapter====================
11-24 16:21:02.707 D DesignPattern: output volt = 5