Sobes.tech
Junior — Middle

Nima uchun ko'prik naqshida abstraktsiya va aniq amalga oshirish ajratiladi?

sobes.tech AI

AIdan javob

Bridge (Ko‘prik) naqshida, abstraktsiya va aniq amalga oshirish o‘rtasidagi ajratish ularni bir-biridan mustaqil ravishda o‘zgartirish imkonini beradi. Bu, abstraktsiya implementatsiya interfeysiga havola qilganligi uchun, aniq sinfga emas, shuning uchun amalga oshirish interfeysiga havola qilganligi uchun amalga oshiriladi.

Ajratish sabablari:

  • Moslashuvchanlik: Implementatsiya, abstraktsiyani o‘zgartirmasdan, va aksincha, o‘zgartirilishi mumkin.
  • Kengaytiriluvchanlik: Yangi amalga oshirishlar va yangi abstraktsiyalarni ko‘p bo‘lakli sinflarsiz qo‘shish oson.
  • O‘zgarishlarni izolyatsiya qilish: Implementatsiyadagi o‘zgarishlar, abstraktsiyani ishlatadigan mijoz kodiga ta’sir qilmaydi.

Masalan, agar sizda "Shakl" abstraktsiyasi va "Ekranda chizish" va "Faylga chizish" amalga oshirishlar bo‘lsa, siz shakl mantiqini o‘zgartirmasdan chizish usulini o‘zgartirishingiz mumkin.

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.doira 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);
    }
}

Shu tarzda, Circle abstraktsiyasi, DrawingAPI ning aniq amalga oshirishiga bog‘liq emas, bu esa texnik xizmat ko‘rsatish va kengaytirishni osonlashtiradi.