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" իրագործումից, ինչը հեշտացնում է սպասարկումը և ընդլայնումը։