Назад к вопросам
Middle+
4
Расскажите про паттерн 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 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 независимо от классов фигур, и наоборот.