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和增删查改分离支持不同的数据库。

总结

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

参考:

相关推荐
胡仁总灌君.6 小时前
Docker网络、数据卷及安全优化
运维·安全·docker·容器·bridge
Forbesdytto19 小时前
kotlin中的对象表达式与java中的匿名内部类
java·kotlin·移动端
吾爱星辰1 天前
【Kotlin 集合概述】可变参数vararg、中缀函数infix以及解构声明(二十)
java·开发语言·jvm·kotlin
吾爱星辰1 天前
【Kotlin基于selenium实现自动化测试】初识selenium以及搭建项目基本骨架(1)
java·开发语言·jvm·selenium·kotlin
且随疾风前行.1 天前
技术成神之路:设计模式(十九)桥接模式
设计模式·桥接模式
孑么1 天前
GDPU Andriod移动应用 Activity周期与启动
android·xml·java·kotlin·android-studio
拉玛干2 天前
gradle的入门及kotlin的了解
android·开发语言·kotlin
吾爱星辰3 天前
【解密 Kotlin 扩展函数】扩展函数的创建(十六)
java·开发语言·jvm·kotlin
海伟4 天前
kotlin flow 使用
android·开发语言·kotlin
LKID体5 天前
桥接模式和NET模式的区别
桥接模式