O padrão de projeto Adapter é utilizado para permitir que duas classes incompatíveis trabalhem juntas. Ele converte a interface de uma classe em outra interface esperada pelos clientes. Dessa forma, classes que normalmente não poderiam interagir diretamente podem ser integradas de forma transparente.



public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Escolha a opção de pagamento:");
System.out.println("01 - PayPal");
System.out.println("02 - Payoneer");
System.out.println("03 - Mercado Pago");
System.out.print("Digite o número correspondente à opção desejada: ");
String paymentOption = scanner.nextLine();
IPayPalPayments paymentProcessor;
switch (paymentOption) {
case "01":
paymentProcessor = new PayPal();
System.out.println("Você escolheu PayPal.");
break;
case "02":
paymentProcessor = new PayoneerAdapter(new Payoneer());
System.out.println("Você escolheu Payoneer.");
break;
case "03":
paymentProcessor = new MercadoPagoAdapter(new MercadoPago());
System.out.println("Você escolheu Mercado Pago.");
break;
default:
System.out.println("Opção inválida. Por favor, escolha entre 01, 02 ou 03.");
return;
}
paymentProcessor.paypalPayments();
paymentProcessor.paypalReceive();
}
}
Main captura a entrada do usuário e, com base nela, instancia o adaptador correto.IPayPalPayments paymentProcessor; é a interface que será usada para processar os pagamentos.01, 02, 03), a aplicação instancia a implementação correta: PayPal, PayoneerAdapter ou MercadoPagoAdapter.IPayPalPayments e adicioná-lo ao switch da Main.