【设计模式】结构型设计模式之 桥接模式

一、 介绍

  1. 桥接模式在《设计模式 可复用面向对象软件的基础》中定义为:将抽象和现实解耦,让他们可以独立变化。
  2. 上面的定义比较难以理解,换个通俗的说法:一个类存在两个或多个独立变化的维度,通过组合的方式让这个类在这两个维度上可以独立拓展。这么理解的话,桥接模式主要可以用来解决继承爆炸的问题。

核心思想:

  • 解耦:将抽象与实现分离,使得两者可以独立变化。抽象部分专注定义接口,实现部分专注具体实现,两者通过对象间的组合关系相连。
  • 多维度扩展:当一个类存在两个或多个独立变化的维度时,桥接模式可以有效管理这种多维度的扩展,每个维度可以独立进行变化和扩展,不会相互影响。

应用场景

  1. 需要应对多维度变化的系统:当一个类的职责需要分解到多个维度上,每个维度都可能独立变化时,使用桥接模式可以使系统更加灵活。
  2. 避免多层继承带来的复杂性:如果采用传统的继承方式来支持多维度的变化,可能会导致类的数量呈指数级增长(类爆炸问题)。桥接模式通过组合的方式解决了这一问题。
  3. 提高系统的可扩展性:当需要向系统添加新的实现或改变现有实现时,只需增加新的实现类,而无需修改抽象类或客户端代码。

二、解决继承爆炸的问题 M*N ->M+N

买车案例

如果车辆有一个类,然后其可以选装不同形式的轮毂 M 种、不同形式的颜色 N 种,如果每种具体的车辆类型都会产生一个子类,那么共有 MN 种子类。
此时,如果我们将轮毂和颜色都单独定义成一个类,在车辆类中使用组合来关联轮毂和颜色。那么只需要 M 种轮毂、N 种颜色便可以组合出 M
N 种配置了。

三、 JAVA 日志系统的 Logger、Appender、Formatter

SL4J 框架有 3 个核心概念,也用到了桥接模式这三个属性可以独立变化,随意组合出自己想要的日志记录器。

  1. Logger 表示日志记录的类的范围
  2. Appender 表示日志输出到哪儿
  3. Formatter 表示日志记录的格式

相关推荐

  1. 设计模式结构设计模式 模式

    2024-06-14 09:14:01       8 阅读
  2. 设计模式结构设计模式——模式

    2024-06-14 09:14:01       22 阅读
  3. 设计模式结构模式模式

    2024-06-14 09:14:01       27 阅读
  4. GO设计模式——8、模式结构

    2024-06-14 09:14:01       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-14 09:14:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-14 09:14:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-14 09:14:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-14 09:14:01       18 阅读

热门阅读

  1. 威胁情报多场景下的实战技术落地

    2024-06-14 09:14:01       9 阅读
  2. Hudi extraMetadata 研究总结

    2024-06-14 09:14:01       7 阅读
  3. 大语言模型学习笔记-1

    2024-06-14 09:14:01       6 阅读
  4. MySQL CDC

    2024-06-14 09:14:01       9 阅读
  5. 璨与序列 题解(stl,dfs)

    2024-06-14 09:14:01       8 阅读
  6. 后端主流框架--Spring

    2024-06-14 09:14:01       5 阅读
  7. 响应式网页开发方法与实践

    2024-06-14 09:14:01       6 阅读
  8. 602. 好友申请 II :谁有最多的好友

    2024-06-14 09:14:01       6 阅读
  9. AI学习指南机器学习篇-支持向量机模型评估

    2024-06-14 09:14:01       8 阅读
  10. C语言中数组和指针的关系

    2024-06-14 09:14:01       5 阅读
  11. HTML 颜色名

    2024-06-14 09:14:01       8 阅读