Junior — Middle
Можете да дадете пример за ситуация, в която системата зависи от абстракцията, а не от конкретните реализации на обектите?
sobes.tech AI
Отговор от 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, а не от конкретна реализация, което позволява лесно да се сменя начинът на плащане без да се променя кода на сервиза.