C#中的桥接模式

C#中的桥接模式
L X Y桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
主要代码
1 | ///<桥接模式> |
模式结构
| 角色 | 代码示例 | 职责 |
|---|---|---|
| 抽象部分 | RemoteControl | 定义高层控制逻辑 |
| 扩展抽象 | ConcreteRemote | 实现抽象部分的接口 |
| 实现者接口 | TV | 定义底层实现接口 |
| 具体实现者 | SonyTV/SamsungTV | 实现具体业务功能 |
关键点
- 双重分离
1
2
3
4public abstract class RemoteControl { // 抽象部分
public TV _tv; // 桥接点:持有实现者引用
// ...
} - 运行时绑定
1
2remote.SetTV(sony); // 动态切换实现
remote.SetChannel(); - 独立演化
新增遥控器类型只需继承RemoteControl
新增电视品牌只需实现TV接口
使用
1 | RemoteControl remoteControl = new ConcreteRemote(); |
优势分析
| 特性 | 实现方式 | 优势 |
|---|---|---|
| 解耦抽象与实现 | 通过桥接接口连接 | 两者可独立变化 |
| 扩展性 | 新增电视品牌不影响遥控器逻辑 | 符合开闭原则 |
| 组合优于继承 | 使用对象组合而非多层继承 | 避免类爆炸 |
| 动态切换 | SetTV()方法 | 运行时更换实现 |
应用场景
- 需要多维度扩展的系统
- 抽象和实现都应支持独立扩展
- 避免永久绑定抽象与实现
- 常见案例:
- 不同操作系统+不同文件格式
- 多种支付方式+多种支付渠道
- 不同形状+不同渲染引擎
要点记忆:
RemoteControl持有TV接口引用(桥接核心)
ConcreteRemote将操作委托给TV实现
通过SetTV()动态切换具体电视品牌
新增电视品牌只需实现TV接口





