Junior — Middle
Неге көпүрө үлгүсүндө абстракция жана так ишке ашыруу бөлүнөт?
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.айлананын борбору " + x + "," + y + " радиусу " + 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" конкреттүү ишке ашырмадан көзкаранды эмес, бул тейлөө жана кеңейтүүнү жеңилдетет.