Sobes.tech
Junior — Middle

Niyə körpü nümunəsində abstraksiya və konkret həyata keçirmə ayrılır?

sobes.tech Süni İntellekt

AI-dan cavab

Bridge (Körpü) nümunəsində, abstraksiya və konkret həyata keçirmə arasındakı ayrım onların bir-birindən müstəqil olaraq dəyişdirilməsinə imkan verir. Bu, abstraksiyanın həyata keçirilmə interfeysinə istinad etməsi və konkret sinfə yox, onun interfeysinə istinad etməsi ilə təmin edilir.

Ayrımın səbəbləri:

  • Əlverişlilik: Həyata keçirmə, abstraksiyanı dəyişdirmədən və əksinə dəyişdirilə bilər.
  • Genişləndiriləbilərlik: Yeni həyata keçirmələr və yeni abstraksiyalar çox sayda alt sinf yaratmadan asanlıqla əlavə edilə bilər.
  • Dəyişikliklərin izoləsi: Həyata keçirmədəki dəyişikliklər, abstraksiyanı istifadə edən müştəri koduna təsir etmir.

Məsələn, "Şəkil" abstraksiyası və "Ekranda çəkmə" və "Fayla çəkmə" həyata keçirmələri varsa, şəkilin məntiqini dəyişmədən çəkilmə metodunu dəyişə bilərsiniz.

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.çember at " + x + "," + y + " radius " + 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);
    }
}

Beləliklə, "Circle" abstraksiyası, "DrawingAPI"-nin konkret həyata keçirməsinə bağlı deyil, bu da texniki xidmət və genişləndirməni asanlaşdırır.