你还不懂设计模式? - 桥接设计模式

桥接模式(Bridge Pattern),顾名思义。类似与桥的功能。联通两个不同领域。其实这个设计模式的作业也是如此。在Java世界中。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

常见结构如下:
在这里插入图片描述
可以看到,桥接模式的核心在于抽象类依赖接口的具体实现。这样就能使得接口的实现类和抽象类可以自由变化。抽象类来维护与接口的关系。

还是举个栗子。

场景①:用Java语言来描述彩笔的关系。

     分析: 彩笔是一个接口。不同颜色的彩笔是其子类。

在这里插入图片描述
代码实现如下:

彩笔接口

public interface IColourPen {
    /**
     * 画画
     * @param content 要画的类容
     */
    void draw(String content);
}

红色彩笔

public class RedColourPen implements IColourPen {
    @Override
    public void draw(String content) {
        System.out.println(String.format("您正在使用%s彩笔画画。类容为:%s", "红色", content));
    }
}

黑色彩笔

public class BlackColourPen implements IColourPen {
    @Override
    public void draw(String content) {
        System.out.println(String.format("您正在使用%s彩笔画画。类容为:%s", "黑色", content));
    }
}

测试:

IColourPen colourPen = new RedColourPen();
colourPen.draw("a dog");

输出:
您正在使用红色彩笔画画。类容为:a dog

场景②:我要使用彩笔来画不同的物体。例如人的肖像图,风景图等等。

分析:这个场景需要抽象画画的类容。不同的类容画画的过程不一样。而画画又要依赖彩笔。

在这里插入图片描述
代码实现如下:
画画的类容抽象和动作抽象:

public abstract class AbstractDrawContent {
    protected IColourPen colourPen ;

    public AbstractDrawContent(IColourPen colourPen) {
        this.colourPen = colourPen;
    }

    /**
     * 模版方法设计模式。
     * 模版方法。给子类实现。画不同的类容。就给不同的实现
     */
    public abstract void draw();
}

画人物肖像实现:

public class PortraitsDrawContentImpl extends AbstractDrawContent {
    public PortraitsDrawContentImpl(IColourPen colourPen) {
        super(colourPen);
    }

    @Override
    public void draw() {
        colourPen.draw("人物肖像");
    }
}

画风景图实现:

public class PaysageDrawContentImpl extends AbstractDrawContent {
    public PaysageDrawContentImpl(IColourPen colourPen) {
        super(colourPen);
    }

    @Override
    public void draw() {
        colourPen.draw("风景画");
    }
}

综合上面两部再来看:
在这里插入图片描述
这就是桥接模式模式了。

再来看下测试结果:

AbstractDrawContent drawContent = new PaysageDrawContentImpl(new RedColourPen());
drawContent.draw();

输出结果:
您正在使用红色彩笔画画。类容为:风景画

到这里桥接设计模式的基本结构就介绍清楚了。可以看到桥接设计模式是模版方法设计模式的进阶版。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
桥接模式是一种结构型设计模式,它用于将抽象部分与实现部分解耦,使它们可以独立地变化,从而提高系统的灵活性。 桥接模式由两个主要角色组成: 1. 抽象部分(Abstraction):抽象部分定义了抽象类或接口,并且包含一个对实现部分的引用。抽象部分将具体的操作委托给实现部分进行执行。 2. 实现部分(Implementation):实现部分定义了实现类或接口,并且包含实现抽象部分定义的方法。实现部分提供了具体的操作实现。 桥接模式的核心思想是将抽象部分与实现部分分离,通过组合的方式将它们连接起来。这样可以使得抽象部分和实现部分可以独立地进行扩展和变化,而不会影响到彼此。 桥接模式在实际项目中常见的应用场景包括: 1. 当存在多个维度的变化时:如果一个系统中存在多个维度的变化,例如操作系统和图像格式两个维度的变化,可以使用桥接模式将这些维度分离,使得它们可以独立地进行变化和扩展。 2. 当需要在抽象部分和实现部分之间建立稳定的关联关系时:如果抽象部分和实现部分之间需要建立稳定的关联关系,例如一个操作需要依赖于一个具体的实现类,可以使用桥接模式来实现这种关联关系。 3. 当一个类存在多个独立变化的因素时:如果一个类存在多个独立变化的因素,并且这些变化需要进行组合,可以使用桥接模式来实现这种组合。例如,在一个图形绘制系统中,可以通过桥接模式将图形对象和颜色对象分离,使得它们可以独立地进行变化和扩展。 总之,桥接模式通过将抽象部分与实现部分解耦,使它们可以独立地变化,提高系统的灵活性。它适用于存在多个维度的变化、需要建立稳定关联关系以及存在多个独立变化因素的场景。通过使用桥接模式,可以使系统的结构更加清晰,并且方便地进行扩展和变化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值