C#设计模式--桥接模式

0.C#设计模式--简单工厂模式

1.C#设计模式--工厂方法模式

2.C#设计模式--抽象工厂模式

3.C#设计模式--单例模式

4.C#设计模式--建造者模式

5.C#设计模式--原型模式

6.C#设计模式--设配器模式

7.C#设计模式--装饰器模式

8.C#设计模式--代理模式

9.C#设计模式--外观模式

设计模式:

桥接模式(Bridge Pattern)

简单介绍:

桥接模式(Bridge Pattern):桥接模式的用意是将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。

生活实例:比如我们平常接触到的手机系统与软件的关系,每当有新的软件,他们会不断的支持各类系统(当然只是举例子,有的不一定一开始发布就把多个平台都支持了)

手机系统:ios,Android……

手机软件:微信,网易云音乐……

桥接模式组成:

桥接模式的结构包括Abstraction、RefinedAbstraction、Implementor、ConcreteImplementor四个部分,其中:

  Abstraction:定义抽象类的接口,它维护了一个指向Implementor类型对象的指针。

  RefinedAbstraction:扩充由Abstraction定义的接口;

  Implementor:定义实现类的接口,该接口不一定要与Abstraction的接口完全一致,事实上两个接口可以完全不同。一般情况,Implementor接口仅为提供基本操作,而 Abstraction则定义了基于基本操作的较高层次操作。

  ConcreteImplementor实现Implementor接口并定义它的具体实现。

  在桥接模式中,两个类Abstraction和Implementor分别定义了抽象与行为类型的接口,通过调用两接口的子类实现抽象与行为的动态组合。

生活实例:Abstraction ---》SystemPlatform(系统平台接口)

    RefinedAbstraction---》ios系统平台合Android系统平台

    Implementor----》ISoftWare软件接口

    ConcreteImplementor---》微信和网易云音乐

桥接模式类图:

桥接模式C#代码举例

ISoftware类:软件接口类

1     /// <summary>
2     /// 软件接口类
3     /// </summary>
4     public interface ISoftWare
5     {
6         void Start();
7     }

WeiChart:微信软件类

复制代码
 1     /// <summary>
 2     /// 微信软件类
 3     /// </summary>
 4     public class WeiChart:ISoftWare
 5     {
 6         public void Start()
 7         {
 8             Console.WriteLine("微信已运行!");
 9         }
10     }
复制代码

WanyiMusic:网易云音乐类

复制代码
 1     /// <summary>
 2     /// 音乐软件类
 3     /// </summary>
 4     public class WangyiMusic:ISoftWare
 5     {
 6         public void Start()
 7         {
 8             Console.WriteLine("网易云音乐已运行!");
 9         }
10     }
复制代码

SystemPlatform类:系统平台抽象类

1     /// <summary>
2     /// 运行系统平台抽象接口类
3     /// </summary>
4     public abstract class SystemPlatform
5     {
6         public abstract void Run(ISoftWare software);
7     }

IosSys:ios系统类

复制代码
 1     /// <summary>
 2     /// ios操作系统平台
 3     /// </summary>
 4     public class IosSys:SystemPlatform
 5     {
 6         public override void Run(ISoftWare software)
 7         {
 8             Console.WriteLine("IOS系统欢迎您");
 9             software.Start();
10         }
11     }
复制代码

AndroidSys:Android系统类

复制代码
 1     /// <summary>
 2     /// Android系统类实现
 3     /// </summary>
 4     public class AndroidSys:SystemPlatform
 5     {
 6         public override void Run(ISoftWare software)
 7         {
 8             Console.WriteLine("欢迎来到Android系统");
 9             software.Start();
10         }
11     }
复制代码

用户测试类:

复制代码
 1     /// <summary>
 2     /// 用户测试类
 3     /// </summary>
 4     class Client
 5     {
 6         static void Main(string[] args)
 7         {
 8             //创建软件对象
 9             WeiChart weichart = new WeiChart();
10             WangyiMusic wangyiMusic = new WangyiMusic();
11 
12             Console.WriteLine("-----------IOS-----------");
13             //ios系统运行软件
14             IosSys iosSys = new IosSys();
15             iosSys.Run(weichart);
16             iosSys.Run(wangyiMusic);
17 
18             Console.WriteLine("---------Android---------");
19             //android系统运行软件
20             AndroidSys androidSys = new AndroidSys();
21             androidSys.Run(weichart);
22             androidSys.Run(wangyiMusic);
23 
24             Console.Read();
25             
26         }
27     }
复制代码

运行结果:

桥接模式C#代码工程下载

posted @   JiYF  阅读(1788)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示