Como eu refatorei esse código cheio de IFs com o design pattern Strategy
Você já se viu preso em um código cheio de IFs para gerenciar integrações múltiplas APIs de terceiros (Gateways de pagamento por exemplo)?
No exemplo abaixo, vou te mostrar um cenário comum em um projeto Laravel:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\PaymentGateway\PayPal;
use App\Services\PaymentGateway\Stripe;
class PaymentController extends Controller
{
public function processPayment(Request $request)
{
$provider = $request->input('payment_gateway_provider');
$paymentDetails = $request->input('payment_details');
if ($provider === 'PAYPAL') {
$paypalService = new PayPal();
$paypalService->processPayment($paymentDetails);
} else if ($provider === 'STRIPE') {
$stripeService = new Stripe();
$stripeService->processPayment($paymentDetails);
}
}
}
Esse código até funciona, mas imagine como ele se tornaria difícil de manter e escalar à medida que você adiciona mais gateways de pagamento.
No meu último vídeo, eu te mostro como apliquei o Strategy Pattern junto com Enums do PHP para transformar esse código em algo muito mais limpo e escalável. O código final ficou muito mais simples e fácil de manter.
Confira o vídeo e veja como você pode usar essa técnica no seu próximo projeto! O link está na publicação. Deixe seu feedback nos comentários!