前言:大家好,我是小威,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种设计模式之其他模式,感谢大佬认真读完支持咯~
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论😁
希望能和诸佬们一起努力,今后我们顶峰相见🍻
再次感谢各位小伙伴儿们的支持🤞