侧边栏壁纸
博主头像
人生短短几个秋

行动起来,活在当下

  • 累计撰写 45 篇文章
  • 累计创建 20 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

设计模式-桥接模式

人生短短几个秋
2025-01-25 / 0 评论 / 0 点赞 / 14 阅读 / 0 字

设计模式 - 桥接模式(Bridge Pattern)

介绍

桥接模式是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立变化。桥接模式的核心在于将抽象与实现分离,从而可以独立地扩展抽象和实现部分。

实现

我们以一个图形绘制的例子来说明桥接模式的实现。假设我们要绘制不同形状的颜色,例如红色的圆形和蓝色的矩形。

定义抽象

首先定义一个形状的抽象类,以及颜色的抽象类。

interface Shape {
    void draw();
}

interface Color {
    void applyColor();
}

创建具体实现类

然后创建具体的颜色实现类和形状实现类。

class Red implements Color {
    @Override
    public void applyColor() {
        System.out.print("Red ");
    }
}

class Blue implements Color {
    @Override
    public void applyColor() {
        System.out.print("Blue ");
    }
}

abstract class AbstractShape {
    protected Color color;

    public AbstractShape(Color color) {
        this.color = color;
    }

    public void setColor(Color color) {
        this.color = color;
    }
}

class Circle extends AbstractShape {
    public Circle(Color color) {
        super(color);
    }

    @Override
    public void draw() {
        color.applyColor();
        System.out.println("Circle");
    }
}

class Square extends AbstractShape {
    public Square(Color color) {
        super(color);
    }

    @Override
    public void draw() {
        color.applyColor();
        System.out.println("Square");
    }
}

使用桥接模式

接下来,在主程序中使用桥接模式来绘制不同颜色的图形。

public class DrawingApp {
    public static void main(String[] args) {
        // 创建红色的圆形
        Shape redCircle = new Circle(new Red());
        redCircle.draw(); // 输出 "Red Circle"

        // 创建蓝色的矩形
        Shape blueSquare = new Square(new Blue());
        blueSquare.draw(); // 输出 "Blue Square"

        // 更改图形的颜色
        redCircle.setColor(new Blue());
        redCircle.draw(); // 输出 "Blue Circle"
    }
}

使用场景

桥接模式适用于以下情况:

  • 如果你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如,这种情况可通过在程序运行时更改部分抽象的实现来达到。
  • 根据环境的不同,控制系统可以选择不同的变体。
  • 对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。

总结

桥接模式通过分离抽象和实现,允许两者独立发展。这有助于减少类之间的依赖,提高系统的灵活性。桥接模式适用于需要在运行时改变实现细节的情况,或者当一个系统需要通过简单的配置就能选择不同的实现版本时。


以上就是桥接模式的一个实现案例,希望这篇文章能帮助你更好地理解和应用桥接模式。

0

评论区