Refatoração do sistema monolítico de pedidos aplicando padrões de projeto Strategy, Decorator e Facade para melhorar a manutenibilidade do código.
Usei o Strategy para separar as regras de pagamento e frete. Criei classes separadas para cada tipo (PIX, Cartão, Frete Normal, etc). Isso resolve o problema dos vários "elif" do código original.
Usei Decorator para aplicar descontos e taxas. Assim posso combinar diferentes descontos (como Desconto PIX) com taxas (como Embalagem Presente) sem modificar a classe principal.
Criei uma Facade para simplificar o processo de checkout. Antes era um método grande e complexo, agora é uma interface simples que orquestra tudo.
Cada classe tem uma única responsabilidade. Exemplo: PagamentoPix só cuida de pagamentos via PIX.
O sistema está aberto para extensão mas fechado para modificação. Para adicionar novo método de pagamento, basta criar nova classe.
python checkout_refatorado.py