Junior — Middle
Pode dar um exemplo de uma situação em que o sistema dependa da abstração e não de implementações específicas de objetos?
sobes.tech IA
Resposta da IA
Em Java, costuma-se usar o princípio de depender de abstrações, e não de implementações concretas, para aumentar a flexibilidade e extensibilidade do código. Por exemplo, se você tem uma interface PaymentProcessor com o método processPayment(), o sistema pode trabalhar com qualquer implementação dessa interface — CreditCardProcessor, PayPalProcessor, etc. O código que usa PaymentProcessor não depende de uma classe concreta, mas apenas da abstração:
public interface PaymentProcessor {
void processPayment(double amount);
}
public class CreditCardProcessor implements PaymentProcessor {
public void processPayment(double amount) {
// implementação do pagamento com cartão de crédito
}
}
public class OrderService {
private PaymentProcessor paymentProcessor;
public OrderService(PaymentProcessor paymentProcessor) {
this.paymentProcessor = paymentProcessor;
}
public void checkout(double amount) {
paymentProcessor.processPayment(amount);
}
}
Dessa forma, OrderService depende da abstração PaymentProcessor, e não de uma implementação concreta, permitindo trocar facilmente o método de pagamento sem alterar o código do serviço.