发布时间:2026-06-18阅读(1)
桥接模式(Bridge),是一种结构型设计模式,它是用组合关系代替继承关系来分离复杂结构中不同维度的问题。目标是:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
当复杂的场景中使用继承时出现子类爆炸、不同的变化交融的时候,就可以使用桥接模式。
当需要将每个维度抽取为独立的类层次时,也可以使用桥接模式了。
如何使用桥接模式呢,基本思想有两个:
桥接模式分抽象部分和实现部分,抽象部分就是抽取的那个维度而形成的独立的类层次,实现部分就是原来那部分,抽象部分就是“桥”。
开发前期进行设计时使用桥接模式更有效,改造已有系统,适配器模式更适合。
桥接模式实现主要的角色有:
类图如下:

用遥控与设备来演示代码实现:
/** 实现化部分 */// 接口public interface Device { void setVolume(int percent); int getVolume();}// 具体实现class TV implements Device { public void setVolume(int percent) { // 业务逻辑 } public int getVolume() { // 业务逻辑 }}/** 抽象化部分 */// 接口public abstract class RemoteControl { // 引用实现化的对象: protected Device device; // 抽象出来的业务 public abstract void volumeDown(); public abstract void volumeUp();}// 扩展抽象化public class TvRemoteControl extends RemoteControl { // 实现抽象化部分的业务。主要是组合了实现化的对象 public void volumeDown() { this.device.setVolume(this.device.getVolume()-10); } public void volumeUp() { this.device.setVolume(this.device.getVolume() 10); } // 还可以再扩展业务 public void mute() { this.device.setVolume(0); }}// 客户端使用汽车时RemoteControl rc = new TvRemoteControl(new TV());car.volumeUp();
以上代码将遥控从整个系统提出来,设备代表原系统。各自可以独立发展自己的体系。
桥接模式的扩展桥接模式实现比较复杂,设计思想是不要过度使用继承,而是优先拆分某些部件,使用组合的方式来扩展功能。这种思想价值大于实际实现的意义。
在 JDBC 体系中,从整体中抽象出来的 Driver 类就是桥接对象。各个数据库厂商有自己实现的 Driver 类。加载厂商的Driver类时,就会将 Driver 对象注册到 DriverManager 中,客户端从DriverManager获取Connection时,DriverManager将交给注册的Driver类去实现。
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图