Sobes.tech
Назад к вопросам
Junior — Middle
66

Можете привести пример ситуации, когда система зависит от абстракции, а не от конкретных реализаций объектов?

Ответ от нейросети

sobes.tech AI

В Java часто используется принцип зависимости от абстракций, а не от конкретных реализаций, чтобы повысить гибкость и расширяемость кода. Например, если у вас есть интерфейс PaymentProcessor с методом processPayment(), то система может работать с любыми реализациями этого интерфейса — CreditCardProcessor, PayPalProcessor и т.д. Код, который использует PaymentProcessor, не зависит от конкретного класса, а только от абстракции:

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

public class CreditCardProcessor implements PaymentProcessor {
    public void processPayment(double amount) {
        // реализация оплаты кредитной картой
    }
}

public class OrderService {
    private PaymentProcessor paymentProcessor;

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

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

Таким образом, OrderService зависит от абстракции PaymentProcessor, а не от конкретной реализации, что позволяет легко менять способ оплаты без изменения кода сервиса.