23大设计模式之--桥接模式

Java 桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其实现部分分离,以便它们可以独立地变化。这种模式有助于减少类之间的紧密耦合,同时允许它们可以独立地扩展。桥接模式通过将继承关系转化为组合关系,从而解决了继承的缺点。

桥接模式通常涉及以下角色:

  1. 抽象类(Abstraction):它是包含一个实现部分对象的引用的抽象类。它定义了高层次的抽象接口,而具体子类将实现这个接口。

  2. 扩展抽象类(Refined Abstraction):这是抽象类的子类,用于扩展或修改抽象类的接口。

  3. 实现接口(Implementor):这是定义实现部分的接口,通常包括实现操作的方法。

  4. 具体实现类(Concrete Implementor):这是实现接口的具体实现类。

下面是一个简单示例,演示如何在 Java 中实现桥接模式:

// 实现接口
interface DrawingAPI {
    void drawCircle(int x, int y, int radius);
}

// 具体实现类1
class DrawingAPI1 implements DrawingAPI {
    @Override
    public void drawCircle(int x, int y, int radius) {
        System.out.println("API1 Drawing Circle at (" + x + ", " + y + ") with radius " + radius);
    }
}

// 具体实现类2
class DrawingAPI2 implements DrawingAPI {
    @Override
    public void drawCircle(int x, int y, int radius) {
        System.out.println("API2 Drawing Circle at (" + x + ", " + y + ") with radius " + radius);
    }
}

// 抽象类
abstract class Shape {
    protected DrawingAPI drawingAPI;

    protected Shape(DrawingAPI drawingAPI) {
        this.drawingAPI = drawingAPI;
    }

    public abstract void draw();
}

// 扩展抽象类
class CircleShape extends Shape {
    private int x, y, radius;

    public CircleShape(int x, int y, int radius, DrawingAPI drawingAPI) {
        super(drawingAPI);
        this.x = x;
        this.y = y;
        this.radius = radius;
    }

    @Override
    public void draw() {
        drawingAPI.drawCircle(x, y, radius);
    }
}

// 客户端代码
public class BridgePatternDemo {
    public static void main(String[] args) {
        Shape redCircle = new CircleShape(100, 100, 10, new DrawingAPI1());
        Shape greenCircle = new CircleShape(200, 200, 20, new DrawingAPI2());

        redCircle.draw();
        greenCircle.draw();
    }
}

在上述示例中,我们有两个实现接口 DrawingAPI1DrawingAPI2,它们表示不同的绘图API。然后,我们有一个抽象类 Shape,它包含一个对实现接口的引用,以及一个扩展抽象类 CircleShape,它表示具体的圆形形状。

客户端代码可以创建不同的形状对象,并为它们指定不同的绘图API。这样,形状对象和绘图API之间的关系是松散的,它们可以独立地扩展和变化,从而实现了桥接模式的目标。

桥接模式适用于需要在两个不同维度上扩展对象的场景,从而避免类的指数级增长,同时提高了代码的可维护性和可扩展性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值