桥接是一种结构型设计模式, 可将业务逻辑或一个大类拆分为不同的层次结构, 从而能独立地进行开发。
层次结构中的第一层 (通常称为抽象部分) 将包含对第二层 (实现部分) 对象的引用。 抽象部分将能将一些 (有时是绝大部分) 对自己的调用委派给实现部分的对象。 所有的实现部分都有一个通用接口, 因此它们能在抽象部分内部相互替换。
复杂度:
流行度:
使用示例: 桥接模式在处理跨平台应用、 支持多种类型的数据库服务器或与多个特定种类 (例如云平台和社交网络等) 的 API 供应商协作时会特别有用。
识别方法: 桥接可以通过一些控制实体及其所依赖的多个不同平台之间的明确区别来进行识别。
设备和远程控制之间的桥接
本例展示了远程控制器及其所控制的设备的类之间的分离。
远程控制器是抽象部分, 设备则是其实现部分。 由于有通用的接口, 同一远程控制器可与不同的设备合作, 反过来也一样。
桥接模式允许在不改动另一层次代码的前提下修改已有类, 甚至创建新类。
devices
devices/Device.java: 所有设备的通用接口
devices/Radio.java: 收音机
devices/Tv.java: 电视机
remotes
remotes/Remote.java: 所有远程控制器的通用接口
remotes/BasicRemote.java: 基础远程控制器
remotes/AdvancedRemote.java: 高级远程控制器
Demo.java: 客户端代码
OutputDemo.txt: 执行结果