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


    设计模式学习(八):桥接模式

    作者:Grey

    原文地址:

    博客园:设计模式学习(八):桥接模式

    CSDN:设计模式学习(八):桥接模式

    桥接模式

    桥接模式是一种结构型模式。它将抽象部分和实现部分分离,使他们可以独立地变化。

    使用桥接模式,可以将抽象和具体的发展单独分支(即:抽象中持有一个具体的引用)

    举例说明:

    GG 在追 MM 的时候,可以送书和花两种礼物

    public class GG {
        public void chase(MM mm) {
            Gift g = new WarmGift(new Flower());
            give(mm, g);
        }
    
        public void give(MM mm, Gift g) {
            System.out.println(g + "gived!");
        }
    }
    
    public abstract class Gift {
        protected GiftImpl impl;
    }
    
    public class WarmGift extends Gift {
        public WarmGift(GiftImpl impl) {
            this.impl = impl;
        }
    }
    
    public class GiftImpl {}
    
    public class Flower extends GiftImpl {}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    如上代码,礼物 Flower 被包装成了一个 WarmGift 送给 MM ,WarmGift 和 WildGift 都是 Gift 的一种抽象,Flower 和 Book 都算 Gift 的一种具体实现,

    我们让 Gift 这个抽象类中,持有一个 GiftImpl 的引用

    UML示例图如下:

    image

    如果说代理模式是一个类与另一个类的组合,那么桥接模式是一组类和另外一组类的组合。

    桥接模式的应用

    JDBC 驱动配置

    当我们把具体的 Driver 实现类(比如: com.mysql.jdbc.Driver)注册到 DriverManager 之后,后续所有对 JDBC 接口的调用,都会委派到对具体的 Driver 实现类来执行。而 Driver 实现类都实现了相同的接口(java.sql.Driver),这也是可以灵活切换 Driver 的原因。

    UML 和 代码

    UML 图

    代码

    更多

    设计模式学习专栏

    参考资料

    • Effective Java中文版(第3版)

    • Head First 设计模式

    • 设计模式-可复用面向对象软件的基础

    • 坦克大战-马士兵

    • 菜鸟教程-设计模式

    • 极客时间-设计模式之美-王争

    • 极客时间-小马哥讲Spring核心编程思想-小马哥

  • 相关阅读:
    Manim 中文显示问题报错解决办法
    【QT】Ubuntu 编译安装 QT 5.12.7 源码
    STM32 定时器问题
    【C语言刷题】链表中快慢指针的应用
    【工具】Java请求带http重定向的地址 自动进行重定向
    NLP:自然语言领域NLP模型发展(ELmo→GPT/BERT→MT-DNN→XLNet→RoBERTa→ALBERT)l历程简介、重要算法介绍之详细攻略
    什么是分布式锁?几种分布式锁分别是怎么实现的?
    【微信小程序】在页面跳转时如何进行页面导航
    简单试验:用Excel进行爬虫
    2023-09-12力扣每日一题
  • 原文地址:https://blog.csdn.net/hotonyhui/article/details/127786763
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    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号