桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立地变化。这种设计模式通过组合的方式建立两个类之间的联系,而不是通过继承。桥接模式的主要目的是提高系统的可扩展性和灵活性,使得系统更易于维护和修改。
桥接模式将抽象部分与实现部分分离,让它们都可以独立地变化。这种模式在软件设计中非常有用,特别是在处理具有两个或多个独立变化维度的类型时。通过桥接模式,我们可以将这些类型分解成多个较小的类,这些类可以更容易地进行扩展和维护。
桥接模式包含以下四个基本角色:
桥接模式适用于以下场景:
以下是一个简单的桥接模式示例,用于说明如何将抽象部分与实现部分分离:
// 实现化角色 interface DrawingAPI { void drawCircle(int radius, int x, int y); } // 具体实现化角色 class RedCircle implements DrawingAPI { public void drawCircle(int radius, int x, int y) { System.out.println("Drawing Circle[ color: red, radius: " + radius + ", x: " + x + ", " + y + "]"); } } class GreenCircle implements DrawingAPI { public void drawCircle(int radius, int x, int y) { System.out.println("Drawing Circle[ color: green, radius: " + radius + ", x: " + x + ", " + y + "]"); } } // 抽象化角色 abstract class Shape { protected DrawingAPI drawingAPI; protected Shape(DrawingAPI drawingAPI) { this.drawingAPI = drawingAPI; } public abstract void draw(); } // 修正抽象化角色 class Circle extends Shape { private int x, y, radius; public Circle(int x, int y, int radius, DrawingAPI drawingAPI) { super(drawingAPI); this.x = x; this.y = y; this.radius = radius; } public void draw() { drawingAPI.drawCircle(radius, x, y); } } // 客户端代码 public class BridgePatternDemo { public static void main(String[] args) { Shape redCircle = new Circle(100, 100, 10, new RedCircle()); Shape greenCircle = new Circle(100, 100, 10, new GreenCircle()); redCircle.draw(); greenCircle.draw(); } }
在这个示例中,DrawingAPI
是实现化角色,它定义了一个绘制圆形的接口。RedCircle
和GreenCircle
是具体实现化角色,它们分别实现了绘制红色圆形和绿色圆形的方法。Shape
是抽象化角色,它定义了一个绘制图形的抽象方法,并保存了一个对DrawingAPI
对象的引用。Circle
是修正抽象化角色,它扩展了Shape
类。