← 返回博客列表

模式特点

将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式通过组合而非继承来连接两个独立变化的维度。

类图

类图

应用场景

示例代码(C++)

// 实现者接口 - 渲染器
class Renderer {
public:
    virtual void renderCircle(double x, double y, double r) = 0;
    virtual ~Renderer() = default;
};

class OpenGLRenderer : public Renderer {
public: void renderCircle(double x, double y, double r) override {
    std::cout << "OpenGL: 圆形(" << x << "," << y << "," << r << ")" << std::endl; }};

class DirectXRenderer : public Renderer {
public: void renderCircle(double x, double y, double r) override {
    std::cout << "DirectX: 圆形(" << x << "," << y << "," << r << ")" << std::endl; }};

// 抽象 - 图形
class Shape {
protected: Renderer* m_renderer;
public:
    Shape(Renderer* r) : m_renderer(r) {}
    virtual void draw() = 0;
    virtual ~Shape() = default;
};

class Circle : public Shape {
    double x, y, radius;
public:
    Circle(Renderer* r, double x, double y, double rad)
        : Shape(r), x(x), y(y), radius(rad) {}
    void draw() override { m_renderer->renderCircle(x, y, radius); }
};