码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 设计模式-桥接模式


    目录

    1 传统方案解决手机操作问题

    2 桥接模式

    2.1 基本介绍

    2.2 原理图 

    3 桥接模式解决手机操作问题

     4 桥接模式注意事项和细节


    思考一个问题:现在对不同手机类型的不同品牌实现操作编程(比如:开机,关机,上网,打电话等),如图:

    1 传统方案解决手机操作问题

    • 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。
    • 违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本。
    • 解决方案-使用桥接模式 。

    2 桥接模式

    2.1 基本介绍

    • 桥接模式(Bridge模式)是指: 将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。
    • 是一种结构型设计模式。
    • Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(lmplementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展

    2.2 原理图 

    原理类图说明:

    • Client类: 桥接模式的调用者。
    • 抽象类(Abstraction):维护了 lmplementor,即它的实现类ConcretelmplementorA... 二者是聚合关系,Abstraction 充当桥接类
    • RefinedAbstraction:是 Abstraction 抽象类的子类
    • Implementor:行为实现类的接口
    • ConcretelmplementorA/B:行为的具体实现类从UML图: 这里的抽象类和接口是聚合的关系,其实调用和被调用关系。

    3 桥接模式解决手机操作问题

    类图:

     代码仓库地址:桥接模式代码地址

     4 桥接模式注意事项和细节

    • 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。
    • 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成。
    • 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本
    • 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层要求开发者针对抽象进行设计和编程。
    • 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性,即需要有这样的应用场景。
    • 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
  • 相关阅读:
    [Python图像处理] 基于图像均值消除随机噪声
    Navicat 现已支持 OceanBase 企业版
    在 Rust 中实现 TCP : 1. 联通内核与用户空间的桥梁
    上周热点回顾(3.21-3.27)
    Centos7下zabbix安装与部署,设置中文(保姆级图文)【网络工程】
    数据结构<1>时空复杂度详解
    ②、企业快速开发平台Spring Cloud之HTML 元素
    OSPF—DR与BDR知识点及选举
    UniAPP优美地实现多图片上传、多行文本输入框以、单选框
    ArcGIS 底图服务前端加载某些级别不显示问题
  • 原文地址:https://blog.csdn.net/weixin_43119856/article/details/134521322
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号