Kotlin~Bridge桥接模式

概念

抽象和现实之间搭建桥梁,分离实现和抽象。

抽象(What) 实现(How)
用户可见 系统正常工作的底层代码
产品 付款方式
定义数据类型的类。 处理数据存储和检索的类

角色介绍

  • Abstraction:抽象 定义抽象接口,通常包含对实现接口的引用。
  • Refined Abstraction:扩展抽象,对抽象的扩展,可以是抽象类的子类或具体实现类。
  • Implementor:实现,定义实现接口,提供基本操作的接口。
  • Concrete Implementor:具体实现,实现实现接口的具体类。

UML

代码实现

kt 复制代码
abstract class Product(payment: Payment) {
    abstract fun purchase()
}

/**
 * 图书
 */
class Book(private val payment: Payment) : Product(payment) {
    override fun purchase() {
        payment.processPayment()
        println("Purchase book")
    }
}

/**
 * 电子书
 */
class Electronics(private val payment: Payment) : Product(payment) {
    override fun purchase() {
        payment.processPayment()
        println("Purchase electronics")
    }
}
interface Payment {
    fun processPayment()
}
/**
 * 信用卡支付
 */
class CreditCartPayment() : Payment {
    override fun processPayment() {
        println("Processing credit card payment")
    }
}

/**
 * 微信支付
 */
class WeCharPayment() : Payment {
    override fun processPayment() {
        println("Processing wechat payment")
    }
}

/**
 * 新增现金支付
 */
class CashPayment() : Payment {
    override fun processPayment() {
        println("Processing cash payment")
    }
}

fun main() {
    val creditCart: Payment = CreditCartPayment()
    val wechat: Payment = WeCharPayment()
    val cash: Payment = CashPayment()

    val electronics = Electronics(creditCart)
    electronics.purchase()
    val book = Book(wechat)
    book.purchase()
    val book1 = Book(cash)
    book1.purchase()
}

优缺点

优点

  • 让抽象和实现独立
  • 灵活和扩展的架构
  • 增加代码复用性,可读性和可维护性
  • 简化测试和调试

缺点

  • 增加复杂度
  • 更多的规划和设计工作
  • 不必要的抽象和冗余代码
  • 可读性降低

应用场景

隐藏实现细节,避免抽象和实现的绑定(运行时切换实现和动态配置),提高代码可扩展性。

  • GUI框架,用户界面和实现分离
  • 绘图程序,形状、颜色线条分离以支持不同的组合。
  • 数据库驱动系统,数据api和增删查改分离支持不同的数据库。

总结

和适配器模式区别,代理模式是一种架构设计,适用于前期设计,而适配器模式是基于已有代码出现了不兼容,将不兼容的接口连接起来。

参考:

相关推荐
有点感觉1 天前
Android级联选择器,下拉菜单
kotlin
zhangphil1 天前
Android Coil3缩略图、默认占位图placeholder、error加载错误显示,Kotlin(1)
android·kotlin
xvch2 天前
Kotlin 2.1.0 入门教程(二十三)泛型、泛型约束、协变、逆变、不变
android·kotlin
強云2 天前
23种设计模式 - 桥接模式
设计模式·桥接模式
FLZJ_KL3 天前
【设计模式】【结构型模式】桥接模式(Bridge)
java·设计模式·桥接模式
xvch3 天前
Kotlin 2.1.0 入门教程(二十四)泛型、泛型约束、绝对非空类型、下划线运算符
android·kotlin
zhangphil4 天前
Android Coil ImageLoader MemoryCache设置Key与复用内存缓存,Kotlin
android·kotlin
mmsx4 天前
kotlin Java 使用ArrayList.add() ,set()前面所有值被 覆盖 的问题
android·开发语言·kotlin
lavins4 天前
android studio kotlin项目build时候提示错误 Unknown Kotlin JVM target: 21
jvm·kotlin·android studio
面向未来_4 天前
JAVA Kotlin Androd 使用String.format()格式化日期
java·开发语言·kotlin