Sobes.tech
Junior — Middle

Kodėl tilto šablone atskiriama abstrakcija ir konkreti įgyvendinimas?

sobes.tech AI

Atsakymas iš AI

Bridge (Tiltas) šablone, abstrakcijos ir konkrečios įgyvendinimo atskyrimas leidžia juos keisti nepriklausomai. Tai pasiekiama tuo, kad abstrakcija turi nuorodą į įgyvendinimo sąsają, o ne į konkretų klasės.

Atskyrimo priežastys:

  • Lankstumas: Galite keisti įgyvendinimą be pakeisti abstrakciją ir atvirkščiai.
  • Plėtojimas: Lengva pridėti naujų įgyvendinimų ir naujų abstrakcijų be daugybės pogrupių.
  • Pakeitimų izoliacija: Pakeitimai įgyvendinime neturi įtakos klientų kodui, kuris naudoja abstrakciją.

Pavyzdžiui, jei turite abstrakciją "Figūra" ir įgyvendinimus "Piešimas ekrane" ir "Piešimas faile", galite keisti piešimo būdą, nekeisdami figūros logikos.

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.apskritimas " + x + "," + y + " spindulys " + 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);
    }
}

Šiuo būdu, "Circle" abstrakcija nėra priklausoma nuo "DrawingAPI" konkrečios įgyvendinimo, tai palengvina priežiūrą ir plėtrą.