Sobes.tech
Назад к вопросам
Junior — Middle
65

Ты знаком с концепцией паттерна Bridge и можешь объяснить его принципиальные особенности?

Ответ от нейросети

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 with 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);
    }
}

// Использование
public class Main {
    public static void main(String[] args) {
        Renderer renderer = new VectorRenderer();
        Shape circle = new Circle(renderer, 5);
        circle.draw();
    }
}