Sobes.tech
Junior — Middle

Ինչու՞ է կամուրջի նմուշում բաժանվում է abstraction-ը և կոնկրետ իրականացումը։

sobes.tech AI

Պատասխան AI-ից

Bridge (Կապ) դիզայնի նմուշում, աբստրակցիայի և կոնկրետ իրագործման բաժանումը թույլ է տալիս նրանց անկախ փոփոխել: Սա հասնում է այն բանի, որ աբստրակցիան պարունակում է հղում իրագործման ինտերֆեյսին, ոչ թե կոնկրետ դասին:

Բաժանման պատճառները՝

  • Անհատականություն: Կարող եք փոխել իրագործումը առանց աբստրակցիան փոխելու և հակառակը:
  • Երկարաձգելիություն: Հեշտ է ավելացնել նոր իրագործումներ և նոր աբստրակցիաներ առանց բազմաթիվ ենթակլասների:
  • Փոփոխությունների մեկուսացում: Իրագործման փոփոխությունները չեն ազդում աբստրակցիան օգտագործող հաճախորդային կոդի վրա:

Օրինակ, եթե ունեք աբստրակցիա "Գծանկար" և իրագործումներ "Նկարել էկրանին" և "Նկարել ֆայլում", ապա կարող եք փոխել նկարելու եղանակը առանց գծանկարի տրամաբանությունը փոխելու:

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.շրջան 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);
    }
}

Այսպիսով, "Circle" աբստրակցիան կախված չէ կոնկրետ "DrawingAPI" իրագործումից, ինչը հեշտացնում է սպասարկումը և ընդլայնումը։