Quick actions

cmd+k|ctrl+k

Navigation

Languages

Strategy Pattern örneği

Snippet info

Language

Php

Visibility

public

Author

abdlkdrgndz

Created

2023-05-17T21:15:00.590029Z

Updated

2023-05-17T21:15:00.590029Z

<?php

// Strategy Arayüzü
interface PaymentMethodInterface
{
    public function pay($amount);
}

// Concrete Strategy 1
class CreditCardPayment implements PaymentMethodInterface
{
    public function pay($amount)
    {
        echo "Kredi kartı ile ödeme yapıldı: $amount TL";
    }
}

// Concrete Strategy 2
class PayPalPayment implements PaymentMethodInterface
{
    public function pay($amount)
    {
        echo "PayPal ile ödeme yapıldı: $amount TL";
    }
}

// Context (Kullanıcı)
class Customer
{
    private $paymentMethod;

    public function setPaymentMethod(PaymentMethodInterface $paymentMethod)
    {
        $this->paymentMethod = $paymentMethod;
    }

    public function makePayment($amount)
    {
        $this->paymentMethod->pay($amount);
    }
}

// Kullanım
$customer = new Customer();
$customer->setPaymentMethod(new CreditCardPayment());
$customer->makePayment(100); // Kredi kartı ile ödeme yapıldı: 100 TL

$customer->setPaymentMethod(new PayPalPayment());
$customer->makePayment(50); // PayPal ile ödeme yapıldı: 50 TL
INFO