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" კონკრეტულ განხორციელებაზე, რაც გამარტივებს შენარჩუნებას და გაფართოებას.