Sobes.tech
Back to questions
Middle+
3

Расскажите про паттерн Bridge — для чего нужен и как работает?

Companies where asked
луция

Answer from AI

sobes.tech AI

Паттерн Bridge используется для разделения абстракции и её реализации, чтобы они могли изменяться независимо друг от друга. Это полезно, когда нужно избежать жесткой связи между интерфейсом и реализацией, особенно если обе части могут иметь разные вариации.

Как работает:

  • Есть абстракция (например, интерфейс или абстрактный класс), которая содержит ссылку на объект реализации.
  • Реализация — отдельный интерфейс или класс, который инкапсулирует конкретные детали.
  • Абстракция делегирует вызовы реализации.

Пример на Java:

// Реализация
interface Renderer {
    void renderCircle(float radius);
}

class VectorRenderer implements Renderer {
    public void renderCircle(float radius) {
        System.out.println("Drawing a circle of radius " + radius + " as lines");
    }
}

class RasterRenderer implements Renderer {
    public void renderCircle(float radius) {
        System.out.println("Drawing pixels for circle of radius " + radius);
    }
}

// Абстракция
abstract class Shape {
    protected Renderer renderer;
    public Shape(Renderer renderer) {
        this.renderer = renderer;
    }
    public abstract void draw();
}

class Circle extends Shape {
    private float radius;
    public Circle(Renderer renderer, float radius) {
        super(renderer);
        this.radius = radius;
    }
    public void draw() {
        renderer.renderCircle(radius);
    }
}

// Использование
Renderer vector = new VectorRenderer();
Shape circle = new Circle(vector, 5);
circle.draw();

Таким образом, можно менять реализацию Renderer независимо от классов фигур, и наоборот.