Mini-Projeto: Aula 14 – Gateway de Pagamentos (Design Patterns) 🛡️
Objetivo
Aplicar o padrão Strategy e Repository para criar um sistema de processamento de pagamentos flexível (Cartão, Boleto, Pix) sem acoplamento.
🏗️ Requisitos do Projeto
- Interface
IPaymentStrategy. - Implementações para
CreditCardPaymentePixPayment. - Classe
PaymentContextque executa a estratégia selecionada. - Uso de
Dependency Injectionpara passar a estratégia desejada.
🛠️ Passo a Passo
1. O Padrão Strategy
interface IPaymentStrategy {
process(amount: number): string;
}
class PixPayment implements IPaymentStrategy {
process(amount: number) { return `Pix de R$${amount} gerado.`; }
}
class CardPayment implements IPaymentStrategy {
process(amount: number) { return `Cartão de R$${amount} processado.`; }
}
2. O Contexto
class Checkout {
constructor(private strategy: IPaymentStrategy) {}
finalizar(valor: number) {
console.log(this.strategy.process(valor));
}
}
const pedido = new Checkout(new PixPayment());
pedido.finalizar(200);
✅ Desafio Extra
- Implemente o padrão
Factorypara instanciar a estratégia correta baseada em uma string (ex: "PIX", "CARD"). - Crie um
Repository(interface + implementação em memória) para salvar o histórico de pagamentos realizados.