کد Strategy pattern

پرسیده شده
فعالیت 1087 روز پیش
دیده شده 694 بار
1

سلام , 

 

کد این پترن رو می زارم , امیدوار مفید باشه.

<?php

interface PaymentInterface
{
    public function pay(float $amount);
}

// main class for payment
class Payment implements PaymentInterface
{
    private $paymentStrategy;
    public function __construct(PaymentInterface $paymentStrategy)
    {
        $this->setPaymentStrategy($paymentStrategy);
    }

    // To change strategy on runtime
    public function setPaymentStrategy(PaymentInterface $paymentStrategy)
    {
        $this->paymentStrategy = $paymentStrategy;
    }

    public function pay(float $amount)
    {
        $this->paymentStrategy->pay($amount);
    }
}
// Different ways of Payment :
class OnlinePayment implements PaymentInterface
{
    public function pay(float $amount)
    {
        echo "Cnline payment $amount" . PHP_EOL;
    }
}

class CartToCartPayment implements PaymentInterface
{
    public function pay(float $amount)
    {
        echo "CartToCart payment $amount" . PHP_EOL;
    }
}

class CashOnPayment implements PaymentInterface
{
    public function pay(float $amount)
    {
        echo "CashOn payment $amount" . PHP_EOL;
    }
}

$payment = new Payment(new CartToCartPayment);

$payment->pay(10000);

$payment->setPaymentStrategy(new CashOnPayment);

$payment->pay(20000);
فایل پیوست

Faraz salehi
Faraz salehi

20 اردیبهشت 00