双维度的任意组合是桥接模式的奥义所在。 <!-- more --> ## 场景 1. QFC 流量日历中,有开始扩容,扩容完成等四种类型的消息,需要分别通过 qt 和 email 通知相关人员 2. Java数据库连接库JDBC用到哪种设计模式? 桥接模式是结构型模式,关注点在依赖关系的维护。对于jdbc技术来说,它解耦了业务与数据库通信协议这两个纬度之间的关系,所以这两个纬度之间的关系就需要一个桥,即Driver,至于DriverManager把这个关系接到哪里就是运行时的事情了。 1. 微观上,从connection的创建来看,它更像一个抽象工厂模式,特定的Driver创建对应的connection。 2. 宏观上,从业务代码与connection的关系来看,关键点在于一个sql怎么转化为对应的通信协议,就属于桥接。 ## 实现 用 super 实现灵活绑定,Notification 类相当于抽象,Channel 类相当于实现,两者可以独立开发,通过组合关系(也就是桥梁)任意组合在一起。所谓任意组合的意思就是,不同紧急程度的消息和发送渠道之间的对应关系,不是在代码中固定写死的,我们可以动态地去指定(比如读取配置) ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2024%2F05%2F09%2F23-12-30-1113d0780e734205c59018843c39c7df-20240509231229-d73ff5.png) ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2024%2F05%2F09%2F23-12-34-44f0a8835f6264ef7b29a2023a25246e-20240509231233-286dd6.png) ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2024%2F05%2F09%2F23-12-40-da319eba869de325e68ec51603376eca-20240509231240-7683cf.png) ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2024%2F05%2F09%2F23-12-37-b34725fe364f35a1f08eaa8bebea76fc-20240509231236-b1820d.png)