码农知识堂 - 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编写自己的微型Redis
    《Java从入门到精通》“String类 “学习心得13
    戏说领域驱动设计(八)——边界
    RabbitMQ部署及使用
    java数据库开发与实战应用,2022最值得加入的互联网公司有哪些
    openGauss学习笔记-78 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT关键技术
    BUFLAB
    ES6空值合并运算符(??)
    传述最详细的干货,让简历面试不再成为你找工作的绊脚石
    [自建题库]c认证初级
  • 原文地址:https://blog.csdn.net/weixin_43119856/article/details/134521322
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号