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