桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象与实现解耦,使得两者可以独立地变化,这种模式的主要作用是将抽象部分与它的实现部分分离,从而使它们都可以独立地变化,在软件设计中,桥接模式经常被用于解决一些复杂的问题,当一个子系统中的类需要与另一个子系统的类进行通信时,如果这两个子系统之间没有直接的关联,那么就需要使用桥接模式来建立它们之间的联系。
桥接模式的核心思想是定义一个抽象的接口,然后让具体的实现类继承这个接口,这样,我们就可以在不改变现有代码的情况下,轻松地替换掉实现类,由于抽象接口与具体实现类之间的解耦关系,我们还可以对抽象接口进行修改,而不会影响到具体的实现类。
下面是一个简单的桥接模式示例:
// 定义一个抽象接口 interface Shape { void draw(); } // 实现接口的具体类A class Circle implements Shape { @Override public void draw() { System.out.println("画一个圆形"); } } // 实现接口的具体类B class Square implements Shape { @Override public void draw() { System.out.println("画一个正方形"); } } // 定义一个抽象类,用来封装具体的实现类 abstract class ShapeAdapter implements Shape { protected Shape shape; public ShapeAdapter(Shape shape) { this.shape = shape; } @Override public void draw() { shape.draw(); } } // 让抽象类与其实现类之间解耦关系的桥梁类 class Bridge implements ShapeAdapter { private Circle circle; private Square square; public Bridge(Circle circle, Square square) { this.circle = circle; this.square = square; } @Override public void draw() { circle.draw(); int n = (int) (Math.random() * 10); // 以0~9的整数随机数决定画哪种形状 if (n == 0) { // 如果随机数为0,则画圆形;否则画正方形,这里用到了多态性,因为Bridge实现了ShapeAdapter接口,所以它既可以作为Circle对象,也可以作为Square对象来使用,这样就能够根据不同的情况选择不同的方法来执行,这也是桥接模式的一个重要特点:它允许我们在运行时切换算法或策略。