Junior — Middle
Tudna példát mondani olyan helyzetre, amikor a rendszer az absztrakciótól függ, nem pedig az objektumok konkrét megvalósításaitól?
sobes.tech MI
Válasz az MI-től
Java-ban gyakran alkalmazzák az absztrakcióktól való függőség elvét, nem pedig a konkrét megvalósításoktól, hogy növeljék a kód rugalmasságát és bővíthetőségét. Például, ha van egy PaymentProcessor interfész processPayment() metódussal, akkor a rendszer bármilyen ennek az interfésznek a megvalósításával működhet — CreditCardProcessor, PayPalProcessor, stb. A PaymentProcessor-t használó kód nem függ egy konkrét osztálytól, hanem csak az absztrakciótól:
public interface PaymentProcessor {
void processPayment(double amount);
}
public class CreditCardProcessor implements PaymentProcessor {
public void processPayment(double amount) {
// hitelkártyás fizetés megvalósítása
}
}
public class OrderService {
private PaymentProcessor paymentProcessor;
public OrderService(PaymentProcessor paymentProcessor) {
this.paymentProcessor = paymentProcessor;
}
public void checkout(double amount) {
paymentProcessor.processPayment(amount);
}
}
Így az OrderService az PaymentProcessor absztrakciótól függ, nem pedig egy konkrét megvalósítástól, ami lehetővé teszi a fizetési mód könnyű cseréjét anélkül, hogy a szolgáltatás kódját módosítanánk.