Sobes.tech
Junior — Middle

შეგიძლიათ მაგალითი მოიყვანოთ სიტუაციის, როდესაც სისტემა დამოკიდებულია აბსტრაქციაზე და არა კონკრეტულ ობიექტების განხორციელებაზე?

sobes.tech AI

პასუხი AI-სგან

Java-da, kodun çevikliyi və genişlənə bilənliyi üçün çox vaxt konkret həyata keçirmələrdən çox abstraksiyalara bağlılıq prinsipi istifadə olunur. Məsələn, əgər processPayment() metoduna malik PaymentProcessor interfeysi varsa, sistem bu interfeysin hər hansı bir həyata keçirilməsi ilə işləyə bilər — CreditCardProcessor, PayPalProcessor və s. PaymentProcessor-dən istifadə edən kod konkret sinfə deyil, yalnız abstraksiyaya bağlıdır:

public interface PaymentProcessor {
    void processPayment(double amount);
}

public class CreditCardProcessor implements PaymentProcessor {
    public void processPayment(double amount) {
        // kredit kartı ilə ödənişi həyata keçirmək
    }
}

public class OrderService {
    private PaymentProcessor paymentProcessor;

    public OrderService(PaymentProcessor paymentProcessor) {
        this.paymentProcessor = paymentProcessor;
    }

    public void checkout(double amount) {
        paymentProcessor.processPayment(amount);
    }
}

Beləliklə, OrderService PaymentProcessor abstraksiyasına bağlıdır və konkret həyata keçirməyə deyil, bu da ödəniş metodunu asanlıqla dəyişməyə imkan verir, xidmət kodunu dəyişdirmədən.