桥接模式

37 阅读3分钟

一、概念

将抽象部分与它的实现部分分离,使它们都可以独立变化。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合

二、结构图

image.png

三、代码实现

image.png

class Program
{
    static void Main(string[] args)
    {
        var handset = new HandsetBrandM();// M 牌手机
        handset.SetHandsetSoft(new HandsetGame()); // 安装游戏软件
        handset.Run(); // 运行软件
        handset.SetHandsetSoft(new HandsetAddressList()); // 安装通讯录
        handset.Run();
    }
}
// 手机品牌抽象类
abstract class HandsetBrand
{
    protected HandsetSoft HandsetSoft;

    // 设置手机软件
    public void SetHandsetSoft(HandsetSoft handsetSoft)
    {
        HandsetSoft = handsetSoft;
    }

    // 运行
    public abstract void Run();
}
// 具体手机品牌
class HandsetBrandM : HandsetBrand
{       
    public override void Run()
    {
        if (HandsetSoft != null)
        {
            Console.WriteLine("M 牌手机运行:");
            HandsetSoft.Run(); // 实际上是具体软件在运行
        }
    }
}
class HandsetBrandN : HandsetBrand
{
    public override void Run()
    {
        if (HandsetSoft != null)
        {
            Console.WriteLine("N 牌手机运行:");
            HandsetSoft.Run(); // 实际上是具体软件在运行
        }
    }
}
// 手机软件抽象类
abstract class HandsetSoft
{
    public abstract void Run();
}
// 具体手机软件
class HandsetAddressList : HandsetSoft
{
    public override void Run()
    {
        Console.WriteLine("通讯录");
    }
}
class HandsetGame : HandsetSoft
{
    public override void Run()
    {
        Console.WriteLine("游戏");
    }
}

四、优点

  1. 解耦抽象部分和实现部分,使它们可以独立地变化和演化。
  2. 提高了系统的可扩展性,可以方便地添加新的抽象部分和实现部分。
  3. 提供了继承的替代方案,避免了类爆炸问题。

五、应用

  1. 游戏平台和游戏引擎的桥接:在游戏开发中,桥接模式可以用于将游戏平台(如PC、手机、掌机)与游戏引擎(如Unity、Unreal Engine)进行桥接。这样,可以在不同平台上使用相同的游戏引擎,同时也可以在同一平台上使用不同的游戏引擎。
  2. 操作系统和文件系统的桥接:在操作系统中,桥接模式可以用于将操作系统和不同的文件系统进行桥接。抽象部分定义了文件系统的操作接口,实现部分则负责具体文件系统的实现,如Windows文件系统、Linux文件系统等。
  3. 手机品牌和手机软件的桥接:在手机应用开发中,桥接模式可以用于将手机品牌(如苹果、三星)与手机软件进行桥接。抽象部分定义了手机软件的功能接口,实现部分负责具体的软件实现。
  4. 数据源和数据展示的桥接:在数据展示应用中,桥接模式可以用于将数据源(如数据库、API)与数据展示进行桥接。抽象部分定义了数据展示的方式和格式,实现部分则负责从数据源中获取数据并进行展示。
  5. 电视和遥控器的桥接:在家用电器中,桥接模式可以用于将电视和遥控器进行桥接。抽象部分定义了遥控器的操作接口,实现部分负责具体的电视控制实现。
  6. 操作系统和设备驱动的桥接:在操作系统开发中,桥接模式可以用于将操作系统和设备驱动进行桥接。抽象部分定义了设备的通用接口,实现部分则负责具体设备驱动的实现。