Назад к вопросам
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, а не от конкретной реализации, что позволяет легко менять способ оплаты без изменения кода сервиса.