Junior — Middle
Защо в патърна мост се разделят абстракцията и конкретната реализация?
sobes.tech AI
Отговор от AI
В шаблона "Мост" (Bridge) разделянето на абстракцията и конкретната реализация позволява да ги променяте независимо една от друга. Това се постига, защото абстракцията съдържа препратка към интерфейса за реализация, а не към конкретен клас.
Причини за разделяне:
- Гъвкавост: Може да променяте реализацията без да променяте абстракцията и обратното.
- Разширяемост: Лесно е да добавяте нови реализации и нови абстракции без множество подкласове.
- Изолация на промените: Промените в реализацията не влияят на клиентския код, използващ абстракцията.
Например, ако имате абстракция "Фигура" и реализации "Рисуване на екрана" и "Рисуване във файл", можете да променяте начина на рисуване, без да променяте логиката на фигурата.
interface DrawingAPI {
void drawCircle(double x, double y, double radius);
}
class DrawingAPI1 implements DrawingAPI {
public void drawCircle(double x, double y, double radius) {
System.out.println("API1.кръг в " + x + "," + y + " радиус " + radius);
}
}
class Circle {
private double x, y, radius;
private DrawingAPI drawingAPI;
public Circle(double x, double y, double radius, DrawingAPI drawingAPI) {
this.x = x; this.y = y; this.radius = radius; this.drawingAPI = drawingAPI;
}
public void draw() {
drawingAPI.drawCircle(x, y, radius);
}
}
По този начин, абстракцията "Circle" не зависи от конкретна реализация на "DrawingAPI", което улеснява поддръжката и разширяването.