Junior — Middle
88
Proč v vzoru mostu oddělujeme abstrakci od konkrétní implementace?
Společnosti byly požádány
Odpověď od AI
sobes.tech AI
V návrhu "Most" (Bridge) oddělení abstrakce od konkrétní implementace umožňuje jejich nezávislou změnu. Toho je dosaženo tím, že abstrakce obsahuje odkaz na rozhraní implementace, nikoli na konkrétní třídu.
Důvody oddělení:
- Flexibilita: Implementaci lze měnit bez změny abstrakce a naopak.
- Rozšiřitelnost: Je snadné přidávat nové implementace a nové abstrakce bez mnoha podtříd.
- Izolace změn: Změny v implementaci neovlivňují klientský kód používající abstrakci.
Například pokud máte abstrakci "Obrázek" a implementace "Kreslení na obrazovce" a "Kreslení do souboru", můžete měnit způsob kreslení, aniž byste měnili logiku obrázku.
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.kruh na " + x + "," + y + " poloměr " + 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);
}
}
Tímto způsobem abstrakce "Circle" nezávisí na konkrétní implementaci "DrawingAPI", což usnadňuje údržbu a rozšiřování.