Sobes.tech
Junior — Middle

Miks silla musteril eraldatakse abstraktsioon ja konkreetne teostus?

sobes.tech AI

Vastus AI-lt

Bridge (Sildtee) musteril, abstraktsiooni ja konkreetse teostuse eraldamine võimaldab neid sõltumatult muuta. Seda saavutatakse sellega, et abstraktsioon sisaldab viidet teostuse liidesele, mitte konkreetsele klassile.

Eraldamise põhjused:

  • Paindlikkus: Võite muuta teostust ilma abstraktsiooni muutmata ja vastupidi.
  • Laiendatavus: Uusi teostusi ja uusi abstraktsioone on lihtne lisada ilma paljude alamklassideta.
  • Muudatuste isolatsioon: Muudatused teostuses ei mõjuta klientkoodi, mis kasutab abstraktsiooni.

Näiteks, kui teil on abstraktsioon "Kuju" ja teostused "Joonistamine ekraanil" ja "Joonistamine failile", saate muuta joonistamise viisi ilma kuju loogikat muutmata.

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

Sellisel viisil ei sõltu "Circle" abstraktsioon "DrawingAPI" konkreetse teostuse olemasolust, mis lihtsustab hooldust ja laiendamist.