Head First设计模式——桥接模式

桥接模式

桥接模式:不只改变你的实现,也改变你的抽象。

如果有一个电视厂家,遥控器需要升级,电视也需要修改。这种变化部分的封装就适合使用桥接模式,桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。

设计类图:

 

 

实现遥控器抽象类

复制代码
1     public abstract class RemoteControl
2     {
3         public TV tv;
4         public void SetTV(TV tv) {
5             this.tv = tv;
6         }
7 
8         public abstract void SetChannel();
9     }
复制代码

具体子类

1     public class ConcreteRemote : RemoteControl
2     {
3         public override void SetChannel()
4         {
5             this.tv.TuneChannel();
6         }
7     }

TV接口类

1     public interface TV 
2     {
3         public void TuneChannel();
4     }

特定TV实现

复制代码
 1      class PandaTV : TV
 2     {
 3         public void TuneChannel()
 4         {
 5             Console.WriteLine("熊猫电视调频道");
 6         }
 7     }
 8 
 9 
10     class ChangHongTV:TV
11     {
12         public void TuneChannel()
13         {
14             Console.WriteLine("长虹电视调频道");
15         }
16     }
复制代码

测试桥接模式

 

 

   现在有了两个层次结构,其中一个是遥控器,另一个是平台特定电视机实现。有了桥接的存在,就可以独立的改变这两个层次。

桥接的优点:

1、将实现予以解耦,让它和界面之间不再永久绑定。

2、抽象和实现可以独立扩展,不会影响到对方。

3、对于”具体的抽象类“所做的改变,不会影响到客户

桥接的用途和缺点:

1、适合使用在需要跨平台的图形和窗口系统上。

2、当需要用不同的方式改变接口和实现时,桥接模式很好用。

3、桥接模式的确定时增加了复杂度。

posted @   XSpringSun  阅读(503)  评论(2编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示