Sobes.tech
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.