Sobes.tech
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í.