Junior — Middle
Prečo v vzorec mosta oddelíme abstrakciu od konkrétnej implementácie?
sobes.tech AI
Odpoveď od AI
V vzorec "Most" (Bridge) ločitev abstrakcije od konkretne implementacije omogoča njuno neodvisno spreminjanje. To se doseže, ker abstrakcija vsebuje referenco na vmesnik implementacije, ne na konkretno razred.
Razlogi za ločevanje:
- Prilagodljivost: Implementacijo lahko spremenite brez spremembe abstrakcije in obratno.
- Razširljivost: Enostavno je dodajati nove implementacije in nove abstrakcije brez mnogih podrazredov.
- Izolacija sprememb: Spremembe v implementaciji ne vplivajo na kodo odjemalca, ki uporablja abstrakcijo.
Na primer, če imate abstrakcijo "Oblika" in implementacije "Risanje na zaslon" in "Risanje v datoteko", lahko spremenite način risanja, ne da bi spremenili logiko oblike.
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.krog na " + x + "," + y + " polmer " + 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);
}
}
Tako abstrakcija "Circle" ni odvisna od konkretne implementacije "DrawingAPI", kar olajša vzdrževanje in razširitev.