看到桥接模式,第一时间可能会和适配器模式相联系,但是他们之间是有一个本质的区别就是一个是主动,一个是被动的,桥接模式就相当于是主动定义连接,以及连接之间的关系,后续只需要按着这个规则来就好了,而适配器模式就相当于是已经存在了两个类,需要让他们两个类适配起来,于是就有了适配器模式
具体我们看代码
- 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")
- }