看到桥接模式,第一时间可能会和适配器模式相联系,但是他们之间是有一个本质的区别就是一个是主动,一个是被动的,桥接模式就相当于是主动定义连接,以及连接之间的关系,后续只需要按着这个规则来就好了,而适配器模式就相当于是已经存在了两个类,需要让他们两个类适配起来,于是就有了适配器模式
具体我们看代码
interface VideoFile{
fun decode(fileName: String)
}
class AVIFile: VideoFile{
override fun decode(fileName: String) {
println("avi")
}
}
class REVBBFile: VideoFile{
override fun decode(fileName: String) {
println("revbbf")
}
}
abstract class OperationSystem(val videoFile: VideoFile){
abstract fun paly(fileName: String)
}
class Windows(videoFile: VideoFile) : OperationSystem(videoFile){
override fun paly(fileName: String) {
videoFile.decode(fileName)
}
}
class Mac(videoFile: VideoFile): OperationSystem(videoFile){
override fun paly(fileName: String) {
videoFile.decode(fileName)
}
}
fun main(){
val os = Windows(AVIFile())
os.paly("战狼3")
}