23种设计模式之桥接模式(Bridge Pattern)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将23种设计模式中的桥接模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,在一家满意的公司实习👏👏

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

以下正文开始
在这里插入图片描述

桥接模式概念

桥接模式是一种结构型设计模式,它可以将抽象部分和实现部分分离开来,使它们可以独立地进行变化。桥接模式的本质是解耦合,即将一个系统从多个角度进行划分,并尽可能地将它们之间建立桥梁连接起来。这样可以使得不同的维度变化互相独立,从而更加易于理解、扩展和修改。

桥接模式由四个要素组成:抽象类、具体类、抽象实现类和具体实现类。其中,抽象类和具体类是针对抽象部分的封装,抽象实现类和具体实现类是针对实现部分的封装。通过将抽象类和抽象实现类分别定义为接口,并用具体类和具体实现类来实现它们,形成一个两层的继承结构,就可以使得抽象部分和实现部分可以独立地进行扩展和变化。

在桥接模式中,客户端只需要关心抽象部分和实现部分如何协作,而不需要了解它们的具体实现细节。这样,就可以让客户端与底层的实现部分分离开来,从而提高系统的灵活性、可扩展性和可维护性。

桥接模式优缺点

下面是桥接模式的主要优点:

  • 抽象部分和实现部分可以独立地变化,扩展性强。
  • 可以更好地解耦合,降低系统的耦合度。
  • 可以提高系统的可扩展性和可维护性。
  • 可以对客户端隐藏系统的实现细节,使接口更加简洁易用。

当然,桥接模式也有局限性:

  • 如果抽象部分和实现部分需要频繁变化,可能会导致类的数量增多。
  • 在实现部分中添加新逻辑时,可能需要修改抽象部分的接口,这可能会导致客户端代码重新编译。

桥接模式案例

接下来以一个案例来详细介绍桥接模式的概念及应用:

// 定义抽象部分的接口
interface AbstractInterface {
    public void doSomething();
}

// 定义实现部分的接口
interface ImplementorInterface {
    public void implement();
}

// 实现具体的抽象部分类
class ConcreteClassA implements AbstractInterface {
    private ImplementorInterface implementor;
    
    public ConcreteClassA(ImplementorInterface implementor) {
        this.implementor = implementor;
    }
    
    public void doSomething() {
        System.out.print("ConcreteClassA - ");
        this.implementor.implement();
    }
}

class ConcreteClassB implements AbstractInterface {
    private ImplementorInterface implementor;
    
    public ConcreteClassB(ImplementorInterface implementor) {
        this.implementor = implementor;
    }
    
    public void doSomething() {
        System.out.print("ConcreteClassB - ");
        this.implementor.implement();
    }
}

// 实现具体的实现部分类
class ConcreteImplementorA implements ImplementorInterface {
    public void implement() {
        System.out.println("ConcreteImplementorA");
    }
}

class ConcreteImplementorB implements ImplementorInterface {
    public void implement() {
        System.out.println("ConcreteImplementorB");
    }
}

// 客户端调用
public class Client {
    public static void main(String[] args) {
        // 创建实现部分对象
        ImplementorInterface implementorA = new ConcreteImplementorA();
        ImplementorInterface implementorB = new ConcreteImplementorB();
        
        // 创建抽象部分对象,并将其和实现部分对象关联
        AbstractInterface abstractA = new ConcreteClassA(implementorA);
        AbstractInterface abstractB = new ConcreteClassB(implementorB);
        
        // 调用抽象类的方法
        abstractA.doSomething();  // 输出 "ConcreteClassA - ConcreteImplementorA"
        abstractB.doSomething();  // 输出 "ConcreteClassB - ConcreteImplementorB"
    }
}

在上面的示例中,我们首先定义了一个抽象部分和实现部分的接口 AbstractInterface 和 ImplementorInterface。然后,我们创建了具体的抽象类和实现类来实现接口,并将它们关联起来。在客户端调用时,我们可以先创建实现部分对象,再将其和抽象部分对象关联,并调用抽象部分的方法来完成具体业务逻辑。

桥接模式小结

桥接模式是一种非常有用的设计模式,它可以帮助我们通过将系统划分为抽象部分和实现部分,并将它们进行桥接连接来解决复杂系统设计中的耦合问题。

好了,本篇文章就先分享到这里了,后续将会继续介绍23种设计模式之其他模式,感谢大佬认真读完支持咯~
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论😁
希望能和诸佬们一起努力,今后我们顶峰相见🍻
再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小威要向诸佬学习呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值